<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/arm/include/cpu.h, branch releng/12.2</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=releng%2F12.2</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=releng%2F12.2'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>2019-10-30T16:41:57Z</updated>
<entry>
<title>MFC r353165: align use of cp15_pmccntr_get with its availability</title>
<updated>2019-10-30T16:41:57Z</updated>
<author>
<name>Andriy Gapon</name>
<email>avg@FreeBSD.org</email>
</author>
<published>2019-10-30T16:41:57Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=2911058ca55d0c8e3695a2adacea0c4aef3deb34'/>
<id>urn:sha1:2911058ca55d0c8e3695a2adacea0c4aef3deb34</id>
<content type='text'>
</content>
</entry>
<entry>
<title>MFC 340164,340168,340170: Add custom cpu_lock_delay() for x86.</title>
<updated>2018-11-08T22:39:38Z</updated>
<author>
<name>John Baldwin</name>
<email>jhb@FreeBSD.org</email>
</author>
<published>2018-11-08T22:39:38Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=8406429759c9e8b86b2be2115f7e3696f42aeae4'/>
<id>urn:sha1:8406429759c9e8b86b2be2115f7e3696f42aeae4</id>
<content type='text'>
340164:
Add a KPI for the delay while spinning on a spin lock.

Replace a call to DELAY(1) with a new cpu_lock_delay() KPI.  Currently
cpu_lock_delay() is defined to DELAY(1) on all platforms.  However,
platforms with a DELAY() implementation that uses spin locks should
implement a custom cpu_lock_delay() doesn't use locks.

340168:
Add a delay_tsc() static function for when DELAY() uses the TSC.

This uses slightly simpler logic than the existing code by using the
full 64-bit counter and thus not having to worry about counter
overflow.

340170:
Add a custom implementation of cpu_lock_delay() for x86.

Avoid using DELAY() since it can try to use spin locks on CPUs without
a P-state invariant TSC.  For cpu_lock_delay(), always use the TSC if
it exists (even if it is not P-state invariant) to delay for a
microsecond.  If the TSC does not exist, read from I/O port 0x84 to
delay instead.

PR:		228768
Approved by:	re (gjb)
</content>
</entry>
<entry>
<title>Include machine/acle-compat.h in cdefs.h on arm if the compiler doesn't</title>
<updated>2016-05-25T19:44:26Z</updated>
<author>
<name>Ian Lepore</name>
<email>ian@FreeBSD.org</email>
</author>
<published>2016-05-25T19:44:26Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=a66dc0c52bd06d55654736be3d285bb481981906'/>
<id>urn:sha1:a66dc0c52bd06d55654736be3d285bb481981906</id>
<content type='text'>
have ACLE support built in.  The ACLE (ARM C Language Extensions) defines
a set of standardized symbols which indicate the architecture version and
features available.  ACLE support is built in to modern compilers (both
clang and gcc), but absent from gcc prior to 4.4.

ARM (the company) provides the acle-compat.h header file to define the
right symbols for older versions of gcc.  Basically, acle-compat.h does
for arm about the same thing cdefs.h does for freebsd: defines
standardized macros that work no matter which compiler you use.  If ARM
hadn't provided this file we would have ended up with a big #ifdef __arm__
section in cdefs.h with our own compatibility shims.

Remove #include &lt;machine/acle-compat.h&gt; from the zillion other places (an
ever-growing list) that it appears.  Since style(9) requires sys/types.h
or sys/param.h early in the include list, and both of those lead to
including cdefs.h, only a couple special cases still need to include
acle-compat.h directly.

Loves it:     imp
</content>
</entry>
<entry>
<title>ARM: Introduce new cpu-v4.h header and move all ARMv4 specific code</title>
<updated>2016-02-05T09:46:24Z</updated>
<author>
<name>Michal Meloun</name>
<email>mmel@FreeBSD.org</email>
</author>
<published>2016-02-05T09:46:24Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=3025d19dfc0de122ab9610b657fdad10abeb0aa8'/>
<id>urn:sha1:3025d19dfc0de122ab9610b657fdad10abeb0aa8</id>
<content type='text'>
from cpu-v6.h to it.
Remove unneeded cpu-v6.h includes.
</content>
</entry>
<entry>
<title>Now that the PMU implementation is independent of HWPMC</title>
<updated>2015-11-09T17:57:32Z</updated>
<author>
<name>Bjoern A. Zeeb</name>
<email>bz@FreeBSD.org</email>
</author>
<published>2015-11-09T17:57:32Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=eeaf6acbfd3593cf4d6ed571be1a8f7dea68907f'/>
<id>urn:sha1:eeaf6acbfd3593cf4d6ed571be1a8f7dea68907f</id>
<content type='text'>
as of r288992 use it to manage the CCNT.

Use the CNNT for get_cyclecount() instead of binuptime() when device pmu
is compiled in; if it fails to attach, fall back to the former method.

Enable by default for the BeagleBoneBlack configuration.

Optained from:		Cambridge/L41
Sponsored by:		DARPA/AFRL
Reviewed by:		andrew
Differential Revision:	https://reviews.freebsd.org/D3837
</content>
</entry>
<entry>
<title>Move the inclusion of cpu-v6.h inside the #ifdef _KERNEL block, so that</title>
<updated>2015-01-08T03:59:03Z</updated>
<author>
<name>Ian Lepore</name>
<email>ian@FreeBSD.org</email>
</author>
<published>2015-01-08T03:59:03Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=9326d90f0e43836b710a09d1d8378a6ce2fa22e0'/>
<id>urn:sha1:9326d90f0e43836b710a09d1d8378a6ce2fa22e0</id>
<content type='text'>
userland programs (which probably don't actually need machine/cpu.h) compile.
</content>
</entry>
<entry>
<title>Add accessors for the ARM CP15 performance monitor registers.  Also ensure</title>
<updated>2015-01-08T01:28:46Z</updated>
<author>
<name>Ian Lepore</name>
<email>ian@FreeBSD.org</email>
</author>
<published>2015-01-08T01:28:46Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=8a474d01ee40d0f2751ed875b6133faab4c9cd45'/>
<id>urn:sha1:8a474d01ee40d0f2751ed875b6133faab4c9cd45</id>
<content type='text'>
that some #ifdef SMP code is also conditional on __ARM_ARCH &gt;= 7; we don't
support SMP on armv6, but some drivers and modules are compiled with it
forced on via the compiler command line.
</content>
</entry>
<entry>
<title>Different versions of the ARM processor use different registers.</title>
<updated>2014-06-17T21:48:04Z</updated>
<author>
<name>Michael Tuexen</name>
<email>tuexen@FreeBSD.org</email>
</author>
<published>2014-06-17T21:48:04Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=2ff25a8b1c1e66346074b2871dced56c81c48768'/>
<id>urn:sha1:2ff25a8b1c1e66346074b2871dced56c81c48768</id>
<content type='text'>
Fix the code used on a Raspberry Pi.

Reviewed by: markm@
</content>
</entry>
<entry>
<title>Give suitably-endowed ARMs a register similar to the x86 TSC register.</title>
<updated>2014-05-14T19:11:15Z</updated>
<author>
<name>Mark Murray</name>
<email>markm@FreeBSD.org</email>
</author>
<published>2014-05-14T19:11:15Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=7ff2eaaad3c5b9e181d382d131419bd1bc4e5049'/>
<id>urn:sha1:7ff2eaaad3c5b9e181d382d131419bd1bc4e5049</id>
<content type='text'>
Here, "suitably endowed" means that the System Control Coprocessor
(#15) has Performance Monitoring Registers, including a CCNT (Cycle
Count) register.

The CCNT register is used in a way similar to the TSC register in
x86 processors by the get_cyclecount(9) function. The entropy-harvesting
thread is a heavy user of this function, and will benefit from not
having to call binuptime(9) instead.

One problem with the CCNT register is that it is 32-bit only, so
the upper 32-bits of the returned number are always 0. The entropy
harvester does not care, but in case any one else does, follow-up
work may include an interrup trap to increment an upper-32-bit
counter on CCNT overflow.

Another problem is that the CCNT register is not readable in user-mode
code; in can be made readable by userland, but then it is also
writable, and so is a good chunk of the PMU system. For that reason,
the CCNT is not enabled for user-mode access in this commit.

Like the x86, there is one CCNT per core, so they don't all run in
perfect sync.

Reviewed by:	ian@ (an earlier version)
Tested by:	ian@ (same earlier version)
Committed from:	WANDBOARD-QUAD
</content>
</entry>
<entry>
<title>Pass the pagetable used from locore.S to initarm to allow it to map data</title>
<updated>2014-02-09T15:54:31Z</updated>
<author>
<name>Andrew Turner</name>
<email>andrew@FreeBSD.org</email>
</author>
<published>2014-02-09T15:54:31Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=b2478843a943a6d248802299b430aa623bf3ea9b'/>
<id>urn:sha1:b2478843a943a6d248802299b430aa623bf3ea9b</id>
<content type='text'>
in as required.
</content>
</entry>
</feed>
