From owner-svn-src-head@FreeBSD.ORG Mon Jun 16 19:25:43 2014 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4E6D991C; Mon, 16 Jun 2014 19:25:43 +0000 (UTC) Received: from mail-n.franken.de (drew.ipv6.franken.de [IPv6:2001:638:a02:a001:20e:cff:fe4a:feaa]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "mail-n.franken.de", Issuer "Thawte DV SSL CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 05173251F; Mon, 16 Jun 2014 19:25:43 +0000 (UTC) Received: from [192.168.1.200] (p508F05E4.dip0.t-ipconnect.de [80.143.5.228]) (Authenticated sender: macmic) by mail-n.franken.de (Postfix) with ESMTP id 25D4D1C0E97AF; Mon, 16 Jun 2014 21:25:37 +0200 (CEST) Content-Type: text/plain; charset=windows-1252 Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.2\)) Subject: Re: svn commit: r266083 - in head/sys/arm: arm include From: Michael Tuexen In-Reply-To: <5F36DFA5-C5B1-4E5D-88EE-9D60240B40FD@FreeBSD.org> Date: Mon, 16 Jun 2014 21:25:37 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: <494BE7DA-26BC-43A7-8BC0-ECAE8A75E1EF@freebsd.org> References: <201405141911.s4EJBFZZ097826@svn.freebsd.org> <537D0952.2040001@selasky.org> <7610C8E6-3F01-4317-BC1A-67645A162CD7@FreeBSD.org> <53871493.2010502@selasky.org> <9412A358-EBCB-4A5A-B728-2A15C50FC217@fh-muenster.de> <9B438991-C970-46A7-8116-A490E02D7139@fh-muenster.de> <3841D090-5973-40B0-B61C-F15E8C1978C9@FreeBSD.org> <3664DBD3-7CEA-43E8-9757-E835BB21FE9E@freebsd.org> <5F36DFA5-C5B1-4E5D-88EE-9D60240B40FD@FreeBSD.org> To: Mark R V Murray X-Mailer: Apple Mail (2.1878.2) Cc: Hans Petter Selasky , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 Jun 2014 19:25:43 -0000 On 16 Jun 2014, at 19:36, Mark R V Murray wrote: >=20 > On 16 Jun 2014, at 08:28, Michael Tuexen wrote: >> your patch for accessing the value is correct. However, the = initialisation code also >> needs to be adopted to the platform. So in addition to your patch, = you also need: >=20 > Thanks! >=20 >> Is there an easy test to see if the code actually works as expected = and not that it just >> allows the system to boot? >=20 > Yes. :-) >=20 > #include >=20 > #include >=20 > static __inline uint64_t > get_cyclecount(void) > { > uint32_t ccnt; > uint64_t tsc; >=20 > /* Read CCNT. */ > __asm __volatile("mrc p15, 0, %0, c15, c12, 1": "=3Dr" (ccnt)); >=20 > tsc =3D (uint64_t)ccnt; >=20 > return (tsc); > } >=20 > #define N 100000 >=20 > int > main(int argc, char *argv[]) > { > int i; > uint64_t ccnt[N]; >=20 > for (i =3D 0; i < N; i++) > ccnt[i] =3D get_cyclecount(); >=20 > for (i =3D 1; i < N; i++) > printf("%6d %016llX %16llu\n", i, ccnt[i], ccnt[i] - = ccnt[i - 1]); >=20 >=20 > return (0); > } >=20 > Should print a whole lotta numbers, incrementing, unless you hit the = wraparound. Don't I need to compile a kernel with _PMC_USER_READ_WRITE_ being = defined, since without it a user process can't access the register. When running it on = a kernel not defining _PMC_USER_READ_WRITE_, I get a core with Illegal = instruction. Let me build a kernel with the above define and retest. >=20 >> Regarding the 32-bit limitation: Do we want to increment the register = only every >> 64 clock cycle? >=20 > Definitely not! The value is in the low bits; wrap is of little = consequence. OK. Best regards Michael >=20 > M > --=20 > Mark R V Murray >=20 >=20