From owner-svn-src-user@FreeBSD.ORG Sat Jul 3 09:41:13 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8286D1065670; Sat, 3 Jul 2010 09:41:13 +0000 (UTC) (envelope-from jmallett@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 58F428FC0A; Sat, 3 Jul 2010 09:41:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o639fDaq073325; Sat, 3 Jul 2010 09:41:13 GMT (envelope-from jmallett@svn.freebsd.org) Received: (from jmallett@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o639fD6e073324; Sat, 3 Jul 2010 09:41:13 GMT (envelope-from jmallett@svn.freebsd.org) Message-Id: <201007030941.o639fD6e073324@svn.freebsd.org> From: Juli Mallett Date: Sat, 3 Jul 2010 09:41:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209654 - user/jmallett/octeon/sys/mips/cavium X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Jul 2010 09:41:13 -0000 Author: jmallett Date: Sat Jul 3 09:41:12 2010 New Revision: 209654 URL: http://svn.freebsd.org/changeset/base/209654 Log: Use Cavium's 64-bit cyclecounter. Modified: user/jmallett/octeon/sys/mips/cavium/octeon_machdep.c Modified: user/jmallett/octeon/sys/mips/cavium/octeon_machdep.c ============================================================================== --- user/jmallett/octeon/sys/mips/cavium/octeon_machdep.c Fri Jul 2 22:17:13 2010 (r209653) +++ user/jmallett/octeon/sys/mips/cavium/octeon_machdep.c Sat Jul 3 09:41:12 2010 (r209654) @@ -47,6 +47,8 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include #include #include @@ -111,8 +113,20 @@ static const struct octeon_feature_descr uint64_t ciu_get_en_reg_addr_new(int corenum, int intx, int enx, int ciu_ip); void ciu_dump_interrutps_enabled(int core_num, int intx, int enx, int ciu_ip); +static uint64_t octeon_get_ticks(void); +static unsigned octeon_get_timecount(struct timecounter *tc); + static void octeon_boot_params_init(register_t ptr); +static struct timecounter octeon_timecounter = { + octeon_get_timecount, /* get_timecount */ + 0, /* no poll_pps */ + 0xffffffffu, /* octeon_mask */ + 0, /* frequency */ + "Octeon", /* name */ + 900, /* quality (adjusted in code) */ +}; + void platform_cpu_init() { @@ -342,8 +356,14 @@ platform_start(__register_t a0, __regist kdb_enter(KDB_WHY_BOOTFLAGS, "Boot flags requested debugger"); #endif platform_counter_freq = cvmx_sysinfo_get()->cpu_clock_hz; + + octeon_timecounter.tc_frequency = cvmx_sysinfo_get()->cpu_clock_hz; + platform_timecounter = &octeon_timecounter; + mips_timer_init_params(platform_counter_freq, 0); + set_cputicker(octeon_get_ticks, cvmx_sysinfo_get()->cpu_clock_hz, 1); + #ifdef SMP /* * Clear any pending IPIs. @@ -359,6 +379,21 @@ platform_start(__register_t a0, __regist printf("\n"); } +static uint64_t +octeon_get_ticks(void) +{ + uint64_t cvmcount; + + CVMX_MF_CYCLE(cvmcount); + return (cvmcount); +} + +static unsigned +octeon_get_timecount(struct timecounter *tc) +{ + return ((unsigned)octeon_get_ticks()); +} + /* impSTART: This stuff should move back into the Cavium SDK */ /* ****************************************************************************************