History log of /openbsd-current/sys/arch/arm/include/armreg.h
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.43 30-Sep-2019 kettenis

Synch the cpu match/attach/identify code with arm64. This drops some
information from dmesg that is no longer relevant to ARMv7 CPUs in favour
of printing the full architected cache hierarchy in the same way as we
do on arm64. It also is another small step towards SMP support on armv7.

ok patrick@


Revision tags: OPENBSD_6_2_BASE OPENBSD_6_3_BASE OPENBSD_6_4_BASE OPENBSD_6_5_BASE
# 1.42 20-Aug-2017 jsg

Add Cortex-A55 and Cortex-A75 part numbers.


# 1.41 27-Apr-2017 kettenis

Bring over the changes to mainbus(4) and simplebus(4) from arm64.


# 1.40 24-Apr-2017 kettenis

Add support for Cortex-A12. Even though ARM rebranded these as Cortex-A17
they have a different ID from "real" Cortex-A17 cores.

ok phessler@, patrick@


Revision tags: OPENBSD_6_1_BASE
# 1.39 04-Jan-2017 jsg

unifdef CPU_XSCALE_PXA2X0, ARM_MMU_XSCALE, ARM_MMU_GENERIC (armv3)
and remove some xscale definitions.

ok kettenis@


# 1.38 01-Jan-2017 jsg

recognise Cortex A32


# 1.37 25-Aug-2016 kettenis

Enable the UWXN bit in the SCTRL register when available. This should
prevent the kernel from accidentally executing userland pages that are
writable.

ok jsg@, patrick@


# 1.36 24-Aug-2016 kettenis

Replace pmap_fault_fixup() with an access flag fault handler on armv7.

ok tom@


# 1.35 14-Aug-2016 jsg

Remove code for Intel 80219/80321 xscale processors used by armish.
Generic xscale support and support for pxa2x0 used by zaurus remains.


# 1.34 14-Aug-2016 kettenis

Fix setting the SMP bit in the Auxiliary Control Register. The old code was
toggling the bit, clearing it when already set. On Cortex-A7 setting the SMP
bit is essential since without it the CPU doesn't actually use its caches.

The SMP bit supposed to be set before turning on the caches and the MMU, so
move the setting of the Auxiliary Control Register before setting the
System Control Register.

ok jsg@


# 1.33 06-Aug-2016 kettenis

Put page tables in normal cachable memory on armv7. Check if the MMU walks
the page tables coherently and also skip flushing modified ptes out of the
cache in that case. Speeds up building a kernel with a factor of two on
Cortex-A9 (tested by me) and Cortex-A8 (tested by mglocker@).

ok patrick@


# 1.32 31-Jul-2016 jsg

Recognise Cortex A35 and Cortex A73.


# 1.31 31-Jul-2016 jsg

Instead of testing MIDR values for every model of Cortex processor check
MMFR0 for an ARMv7 VMSA MMU that can handle short descriptors when
setting ARMv7 function pointers. ARMv8 in AArch32 mode is documented to
set the same bits.

ok patrick@


Revision tags: OPENBSD_6_0_BASE
# 1.30 04-Apr-2016 patrick

Read cache line sizes from CP15 Cache Type Register.

Previously we used the primary data cache's information on how big
the cache lines are. The CTR gives us better information about how
big the smallest cache line sizes (controlled by the CPU) are.

ok jsg@


# 1.29 04-Apr-2016 jsg

Set the SMP/coherency bit in ACTLR on Cortex A models it is documented
to exist on. This is required to use ldrex/strex in some cases.

ok patrick@


# 1.28 22-Mar-2016 patrick

Remove support for ARM11. This was the last unused and unmaintained
processor in our code. Now we're left with only armv7 and XScale for
armish and zaurus.

ok jsg@


# 1.27 22-Mar-2016 patrick

Remove support for ARM10.

ok jsg@


# 1.26 22-Mar-2016 patrick

Remove support for ARM9E. This is another step in the plan to remove
all unused and unmaintained ARM processors from the past.

ok bmercer@ jsg@


# 1.25 22-Mar-2016 jsg

Remove defines for unsupported chips, add V5TEJ and remove incorrect
ARCH_V7 define. The number ARM Ltd armv7 chips set here is 0xf,
documented as 'Defined by CPUID scheme'.

ok patrick@ bmercer@


# 1.24 19-Mar-2016 patrick

Remove support for the XScale 80200. We don't use it, it didn't compile
and the included headers didn't even exist.

ok jsg@


# 1.23 19-Mar-2016 patrick

Remove support for IXP425. This is another architecture that is not
used and has probably never been used at all. Some included headers
do not even exist.

ok jsg@


# 1.22 19-Mar-2016 patrick

Remove support for StrongARM (SA1) and IXP12x0. Both are ARMv4 and
are not used by any of the arm platforms.

ok jsg@


# 1.21 18-Mar-2016 jsg

Remove support for ARM9T (armv4t). Not used by any of the arm platforms.
From Patrick Wildt.


# 1.20 18-Mar-2016 jsg

Remove support for ARM8, an old armv4 processor without thumb that was
never supported by any arm port and wouldn't have built due to a missing
cpufunc_asm_arm8.S file.

From Patrick Wildt.


# 1.19 02-Mar-2016 jsg

fix the name of the define for the a72 mask
from Patrick Wildt


Revision tags: OPENBSD_5_9_BASE
# 1.18 31-Jan-2016 jsg

Switch from PSR_X_bit and X32_bit PSR macro names to just PSR_X.
This matches FreeBSD and makes things a bit more consistent.
Discussed with Patrick.


# 1.17 23-Jan-2016 jsg

In some cases machines with virtualisation extensions will boot into a
HYP processor mode that has different memory management and register
behaviour among other things. In this case switch to SVC mode to
prevent an early crash.

From Patrick Wildt based on code in FreeBSD.


Revision tags: OPENBSD_5_8_BASE
# 1.16 29-May-2015 jsg

add some more cortex A ids


Revision tags: OPENBSD_5_7_BASE
# 1.15 17-Jan-2015 jsg

Add an ascii bit/field diagram for armv7-a psr to match the
existing one for earlier arm revisions.


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE
# 1.14 26-Nov-2013 deraadt

1 << 31 cleanup. Eitan Adler pointed out that there has been a
resurrection of the bad idiom in the tree.
sufficient review by miod, kettenis, tedu


# 1.13 06-Aug-2013 jsg

add Cortex A15 R4
ok patrick@


Revision tags: OPENBSD_5_4_BASE
# 1.12 28-Apr-2013 patrick

Improved dealing of ARMv7 faults. Added ARMv7 fault descriptions.

ok bmercer@
tested on zaurus by todd@ and patrick@
tested on armv7 boards


Revision tags: OPENBSD_5_3_BASE
# 1.11 18-Jan-2013 patrick

Update the ARM CPU ID information. The IDs aren't vendor/product
specific, they are specific to the ARM CPUs themselves.

ok bmercer@ jsg@ deraadt@


Revision tags: OPENBSD_5_1_BASE OPENBSD_5_2_BASE
# 1.10 20-Sep-2011 miod

Late spring cleaning of the arm code for old dusty bits we do not want to
keep:
- remove bootconfig parameter passing feature (unused).
- unifdef __PROG32 and remove all remains of arm26 code.
- remove ARMFPE support (unused).
- remove support for ARM2, ARM2AS, ARM3, ARM6, ARM7, ARM7TDMI and StrongARM
processor families, and the related silicon bug workarounds (especially
the SA-110 STM^ bug).
- remove cpu_functions no longer necessary after previous removals.
- remove ARM32_DISABLE_ALIGNMENT_FAULTS option (unused).
- make FIQ support conditional on option FIQ (unused, but may be eventually).

Discussed with drahn@ and jasper@ long ago, I was sitting on this commit for
no good reason.


Revision tags: OPENBSD_5_0_BASE
# 1.9 17-Mar-2011 jasper

- recognize OMAP3630/DM3730, as found in the beagleboard xM

ok drahn@


Revision tags: OPENBSD_4_7_BASE OPENBSD_4_8_BASE OPENBSD_4_9_BASE
# 1.8 03-Feb-2010 kevlo

typo. CPU_ID_ARM1022EJS -> CPU_ID_ARM1026EJS

ok drahn@


Revision tags: OPENBSD_4_6_BASE
# 1.7 24-May-2009 drahn

Improve the ARMv7 support, still work in progress.


# 1.6 11-May-2009 drahn

Add some (not used yet) control regiser bit definitions.


# 1.5 08-May-2009 drahn

Pieces of arm11 and armv7 support for newer cpus. This is work in progress
and not complete.


Revision tags: OPENBSD_4_5_BASE
# 1.4 11-Sep-2008 kevlo

add support for arm9e core, taken from NetBSD.
ok drahn@


Revision tags: OPENBSD_4_0_BASE OPENBSD_4_1_BASE OPENBSD_4_2_BASE OPENBSD_4_3_BASE OPENBSD_4_4_BASE
# 1.3 29-May-2006 drahn

Add support for i80321 based systems.


Revision tags: OPENBSD_3_7_BASE OPENBSD_3_8_BASE OPENBSD_3_9_BASE
# 1.2 30-Dec-2004 drahn

Add pxa270 id


Revision tags: OPENBSD_3_5_BASE OPENBSD_3_6_BASE SMP_SYNC_A SMP_SYNC_B
# 1.1 01-Feb-2004 drahn

branches: 1.1.2;
Arm port, NetBSD codebase stripped down, 32bit only support.


Revision tags: OPENBSD_6_2_BASE
# 1.42 20-Aug-2017 jsg

Add Cortex-A55 and Cortex-A75 part numbers.


# 1.41 27-Apr-2017 kettenis

Bring over the changes to mainbus(4) and simplebus(4) from arm64.


# 1.40 24-Apr-2017 kettenis

Add support for Cortex-A12. Even though ARM rebranded these as Cortex-A17
they have a different ID from "real" Cortex-A17 cores.

ok phessler@, patrick@


Revision tags: OPENBSD_6_1_BASE
# 1.39 04-Jan-2017 jsg

unifdef CPU_XSCALE_PXA2X0, ARM_MMU_XSCALE, ARM_MMU_GENERIC (armv3)
and remove some xscale definitions.

ok kettenis@


# 1.38 01-Jan-2017 jsg

recognise Cortex A32


# 1.37 25-Aug-2016 kettenis

Enable the UWXN bit in the SCTRL register when available. This should
prevent the kernel from accidentally executing userland pages that are
writable.

ok jsg@, patrick@


# 1.36 24-Aug-2016 kettenis

Replace pmap_fault_fixup() with an access flag fault handler on armv7.

ok tom@


# 1.35 14-Aug-2016 jsg

Remove code for Intel 80219/80321 xscale processors used by armish.
Generic xscale support and support for pxa2x0 used by zaurus remains.


# 1.34 14-Aug-2016 kettenis

Fix setting the SMP bit in the Auxiliary Control Register. The old code was
toggling the bit, clearing it when already set. On Cortex-A7 setting the SMP
bit is essential since without it the CPU doesn't actually use its caches.

The SMP bit supposed to be set before turning on the caches and the MMU, so
move the setting of the Auxiliary Control Register before setting the
System Control Register.

ok jsg@


# 1.33 06-Aug-2016 kettenis

Put page tables in normal cachable memory on armv7. Check if the MMU walks
the page tables coherently and also skip flushing modified ptes out of the
cache in that case. Speeds up building a kernel with a factor of two on
Cortex-A9 (tested by me) and Cortex-A8 (tested by mglocker@).

ok patrick@


# 1.32 31-Jul-2016 jsg

Recognise Cortex A35 and Cortex A73.


# 1.31 31-Jul-2016 jsg

Instead of testing MIDR values for every model of Cortex processor check
MMFR0 for an ARMv7 VMSA MMU that can handle short descriptors when
setting ARMv7 function pointers. ARMv8 in AArch32 mode is documented to
set the same bits.

ok patrick@


Revision tags: OPENBSD_6_0_BASE
# 1.30 04-Apr-2016 patrick

Read cache line sizes from CP15 Cache Type Register.

Previously we used the primary data cache's information on how big
the cache lines are. The CTR gives us better information about how
big the smallest cache line sizes (controlled by the CPU) are.

ok jsg@


# 1.29 04-Apr-2016 jsg

Set the SMP/coherency bit in ACTLR on Cortex A models it is documented
to exist on. This is required to use ldrex/strex in some cases.

ok patrick@


# 1.28 22-Mar-2016 patrick

Remove support for ARM11. This was the last unused and unmaintained
processor in our code. Now we're left with only armv7 and XScale for
armish and zaurus.

ok jsg@


# 1.27 22-Mar-2016 patrick

Remove support for ARM10.

ok jsg@


# 1.26 22-Mar-2016 patrick

Remove support for ARM9E. This is another step in the plan to remove
all unused and unmaintained ARM processors from the past.

ok bmercer@ jsg@


# 1.25 22-Mar-2016 jsg

Remove defines for unsupported chips, add V5TEJ and remove incorrect
ARCH_V7 define. The number ARM Ltd armv7 chips set here is 0xf,
documented as 'Defined by CPUID scheme'.

ok patrick@ bmercer@


# 1.24 19-Mar-2016 patrick

Remove support for the XScale 80200. We don't use it, it didn't compile
and the included headers didn't even exist.

ok jsg@


# 1.23 19-Mar-2016 patrick

Remove support for IXP425. This is another architecture that is not
used and has probably never been used at all. Some included headers
do not even exist.

ok jsg@


# 1.22 19-Mar-2016 patrick

Remove support for StrongARM (SA1) and IXP12x0. Both are ARMv4 and
are not used by any of the arm platforms.

ok jsg@


# 1.21 18-Mar-2016 jsg

Remove support for ARM9T (armv4t). Not used by any of the arm platforms.
From Patrick Wildt.


# 1.20 18-Mar-2016 jsg

Remove support for ARM8, an old armv4 processor without thumb that was
never supported by any arm port and wouldn't have built due to a missing
cpufunc_asm_arm8.S file.

From Patrick Wildt.


# 1.19 02-Mar-2016 jsg

fix the name of the define for the a72 mask
from Patrick Wildt


Revision tags: OPENBSD_5_9_BASE
# 1.18 31-Jan-2016 jsg

Switch from PSR_X_bit and X32_bit PSR macro names to just PSR_X.
This matches FreeBSD and makes things a bit more consistent.
Discussed with Patrick.


# 1.17 23-Jan-2016 jsg

In some cases machines with virtualisation extensions will boot into a
HYP processor mode that has different memory management and register
behaviour among other things. In this case switch to SVC mode to
prevent an early crash.

From Patrick Wildt based on code in FreeBSD.


Revision tags: OPENBSD_5_8_BASE
# 1.16 29-May-2015 jsg

add some more cortex A ids


Revision tags: OPENBSD_5_7_BASE
# 1.15 17-Jan-2015 jsg

Add an ascii bit/field diagram for armv7-a psr to match the
existing one for earlier arm revisions.


Revision tags: OPENBSD_5_5_BASE OPENBSD_5_6_BASE
# 1.14 26-Nov-2013 deraadt

1 << 31 cleanup. Eitan Adler pointed out that there has been a
resurrection of the bad idiom in the tree.
sufficient review by miod, kettenis, tedu


# 1.13 06-Aug-2013 jsg

add Cortex A15 R4
ok patrick@


Revision tags: OPENBSD_5_4_BASE
# 1.12 28-Apr-2013 patrick

Improved dealing of ARMv7 faults. Added ARMv7 fault descriptions.

ok bmercer@
tested on zaurus by todd@ and patrick@
tested on armv7 boards


Revision tags: OPENBSD_5_3_BASE
# 1.11 18-Jan-2013 patrick

Update the ARM CPU ID information. The IDs aren't vendor/product
specific, they are specific to the ARM CPUs themselves.

ok bmercer@ jsg@ deraadt@


Revision tags: OPENBSD_5_1_BASE OPENBSD_5_2_BASE
# 1.10 20-Sep-2011 miod

Late spring cleaning of the arm code for old dusty bits we do not want to
keep:
- remove bootconfig parameter passing feature (unused).
- unifdef __PROG32 and remove all remains of arm26 code.
- remove ARMFPE support (unused).
- remove support for ARM2, ARM2AS, ARM3, ARM6, ARM7, ARM7TDMI and StrongARM
processor families, and the related silicon bug workarounds (especially
the SA-110 STM^ bug).
- remove cpu_functions no longer necessary after previous removals.
- remove ARM32_DISABLE_ALIGNMENT_FAULTS option (unused).
- make FIQ support conditional on option FIQ (unused, but may be eventually).

Discussed with drahn@ and jasper@ long ago, I was sitting on this commit for
no good reason.


Revision tags: OPENBSD_5_0_BASE
# 1.9 17-Mar-2011 jasper

- recognize OMAP3630/DM3730, as found in the beagleboard xM

ok drahn@


Revision tags: OPENBSD_4_7_BASE OPENBSD_4_8_BASE OPENBSD_4_9_BASE
# 1.8 03-Feb-2010 kevlo

typo. CPU_ID_ARM1022EJS -> CPU_ID_ARM1026EJS

ok drahn@


Revision tags: OPENBSD_4_6_BASE
# 1.7 24-May-2009 drahn

Improve the ARMv7 support, still work in progress.


# 1.6 11-May-2009 drahn

Add some (not used yet) control regiser bit definitions.


# 1.5 08-May-2009 drahn

Pieces of arm11 and armv7 support for newer cpus. This is work in progress
and not complete.


Revision tags: OPENBSD_4_5_BASE
# 1.4 11-Sep-2008 kevlo

add support for arm9e core, taken from NetBSD.
ok drahn@


Revision tags: OPENBSD_4_0_BASE OPENBSD_4_1_BASE OPENBSD_4_2_BASE OPENBSD_4_3_BASE OPENBSD_4_4_BASE
# 1.3 29-May-2006 drahn

Add support for i80321 based systems.


Revision tags: OPENBSD_3_7_BASE OPENBSD_3_8_BASE OPENBSD_3_9_BASE
# 1.2 30-Dec-2004 drahn

Add pxa270 id


Revision tags: OPENBSD_3_5_BASE OPENBSD_3_6_BASE SMP_SYNC_A SMP_SYNC_B
# 1.1 01-Feb-2004 drahn

branches: 1.1.2;
Arm port, NetBSD codebase stripped down, 32bit only support.