Even though ARM "merged" the Cortex-A12 as Cortex-A17, there are cores
with the original Cortex-A12 MIDR out there.  So it is useful to
differentiate between them.  The Rockchip RK3288 has 4 of these cores.
The diff below adds support for these cores.

As a teaser, here s a dmesg for the Asus Tinker Board.  As you can
see, it's not very useable yet (and still needs a hack to get serial
output at the moment).

OpenBSD 6.1-current (GENERIC) #51: Mon Apr 24 18:22:59 CEST 2017
    
kette...@chopin.sibelius.xs4all.nl:/home/kettenis/src/armv7/sys/arch/armv7/compile/GENERIC
real mem  = 2147483648 (2048MB)
avail mem = 2097512448 (2000MB)
mainbus0 at root: Tinker-RK3288
cpu0 at mainbus0: ARM Cortex A12 rev 1 (ARMv7 core)
cpu0: DC enabled IC enabled WB disabled EABT branch prediction enabled
cpu0: 32KB(64b/l,4way) I-cache, 32KB(64b/l,4way) wr-back D-cache
agtimer0 at mainbus0: tick rate 24000 KHz
com0 at mainbus0: ns16550, no working fifo
com1 at mainbus0: ns16550, no working fifo
com2 at mainbus0: ns16550, no working fifo
com2: console
com3 at mainbus0: ns16550, no working fifo
com4 at mainbus0: ns16550, no working fifo
ampintc0 at mainbus0 nirq 192, ncpu 4
vscsi0 at root
scsibus0 at vscsi0: 256 targets
softraid0 at root
scsibus1 at softraid0: 256 targets
boot device: lookup 'sd0a:/bsd' failed.
root device:


Index: arch/arm/arm/cpu.c
===================================================================
RCS file: /cvs/src/sys/arch/arm/arm/cpu.c,v
retrieving revision 1.36
diff -u -p -r1.36 cpu.c
--- arch/arm/arm/cpu.c  5 Jan 2017 16:16:17 -0000       1.36
+++ arch/arm/arm/cpu.c  24 Apr 2017 16:36:45 -0000
@@ -126,6 +126,8 @@ const struct cpuidtab cpuids[] = {
          generic_steppings },
        { CPU_ID_CORTEX_A9_R4,  CPU_CLASS_ARMv7,        "ARM Cortex A9 R4",
          generic_steppings },
+       { CPU_ID_CORTEX_A12,    CPU_CLASS_ARMv7,        "ARM Cortex A12",
+         generic_steppings },
        { CPU_ID_CORTEX_A15,    CPU_CLASS_ARMv7,        "ARM Cortex A15",
          generic_steppings },
        { CPU_ID_CORTEX_A15_R1, CPU_CLASS_ARMv7,        "ARM Cortex A15 R1",
Index: arch/arm/arm/cpufunc.c
===================================================================
RCS file: /cvs/src/sys/arch/arm/arm/cpufunc.c,v
retrieving revision 1.50
diff -u -p -r1.50 cpufunc.c
--- arch/arm/arm/cpufunc.c      6 Jan 2017 00:06:02 -0000       1.50
+++ arch/arm/arm/cpufunc.c      24 Apr 2017 16:36:45 -0000
@@ -377,6 +377,7 @@ armv7_setup()
 #endif
                /* FALLTHROUGH */
        case CPU_ID_CORTEX_A7:
+       case CPU_ID_CORTEX_A12:
        case CPU_ID_CORTEX_A15:
        case CPU_ID_CORTEX_A17:
                /* Set SMP to allow LDREX/STREX */
Index: arch/arm/include/armreg.h
===================================================================
RCS file: /cvs/src/sys/arch/arm/include/armreg.h,v
retrieving revision 1.39
diff -u -p -r1.39 armreg.h
--- arch/arm/include/armreg.h   4 Jan 2017 00:40:49 -0000       1.39
+++ arch/arm/include/armreg.h   24 Apr 2017 16:36:46 -0000
@@ -139,6 +139,8 @@
 #define CPU_ID_CORTEX_A9_R3    0x413fc090
 #define CPU_ID_CORTEX_A9_R4    0x414fc090
 #define CPU_ID_CORTEX_A9_MASK  0xff0ffff0
+#define CPU_ID_CORTEX_A12      0x410fc0d0
+#define CPU_ID_CORTEX_A12_MASK 0xff0ffff0
 #define CPU_ID_CORTEX_A15      0x410fc0f0
 #define CPU_ID_CORTEX_A15_R1   0x411fc0f0
 #define CPU_ID_CORTEX_A15_R2   0x412fc0f0

Reply via email to