Skip to content

Commit 00335f7

Browse files
committed
Get the RPI3 working (in aarch32 mode) by recognising Cortex A53 CPUs.
While I'm here add some A57/A72 info as well. My RPI3 works with FB console - the uart needs some help with its clocks.
1 parent 24b2c85 commit 00335f7

File tree

4 files changed

+26
-6
lines changed

4 files changed

+26
-6
lines changed

sys/arch/arm/arm32/cpu.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $NetBSD: cpu.c,v 1.112 2016/01/23 21:39:17 christos Exp $ */
1+
/* $NetBSD: cpu.c,v 1.113 2016/03/03 17:01:31 skrll Exp $ */
22

33
/*
44
* Copyright (c) 1995 Mark Brinicombe.
@@ -46,7 +46,7 @@
4646

4747
#include <sys/param.h>
4848

49-
__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.112 2016/01/23 21:39:17 christos Exp $");
49+
__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.113 2016/03/03 17:01:31 skrll Exp $");
5050

5151
#include <sys/systm.h>
5252
#include <sys/conf.h>
@@ -513,6 +513,14 @@ const struct cpuidtab cpuids[] = {
513513
pN_steppings, "7A" },
514514
{ CPU_ID_CORTEXA17R1, CPU_CLASS_CORTEX, "Cortex-A17 r1",
515515
pN_steppings, "7A" },
516+
{ CPU_ID_CORTEXA53R0, CPU_CLASS_CORTEX, "Cortex-A53 r0",
517+
pN_steppings, "8A" },
518+
{ CPU_ID_CORTEXA57R0, CPU_CLASS_CORTEX, "Cortex-A57 r0",
519+
pN_steppings, "8A" },
520+
{ CPU_ID_CORTEXA57R1, CPU_CLASS_CORTEX, "Cortex-A57 r1",
521+
pN_steppings, "8A" },
522+
{ CPU_ID_CORTEXA72R0, CPU_CLASS_CORTEX, "Cortex-A72 r0",
523+
pN_steppings, "8A" },
516524

517525
{ CPU_ID_MV88SV581X_V6, CPU_CLASS_PJ4B, "Sheeva 88SV581x",
518526
generic_steppings },

sys/arch/arm/include/armreg.h

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $NetBSD: armreg.h,v 1.109 2015/10/15 07:14:56 skrll Exp $ */
1+
/* $NetBSD: armreg.h,v 1.110 2016/03/03 17:01:31 skrll Exp $ */
22

33
/*
44
* Copyright (c) 1998, 2001 Ben Harris
@@ -226,12 +226,20 @@
226226
#define CPU_ID_CORTEXA15R2 0x412fc0f0
227227
#define CPU_ID_CORTEXA15R3 0x413fc0f0
228228
#define CPU_ID_CORTEXA17R1 0x411fc0e0
229-
#define CPU_ID_CORTEX_P(n) ((n & 0xff0ff000) == 0x410fc000)
229+
#define CPU_ID_CORTEXA53R0 0x410fd030
230+
#define CPU_ID_CORTEXA57R0 0x410fd070
231+
#define CPU_ID_CORTEXA57R1 0x411fd070
232+
#define CPU_ID_CORTEXA72R0 0x410fd080
233+
234+
#define CPU_ID_CORTEX_P(n) ((n & 0xff0fe000) == 0x410fc000)
230235
#define CPU_ID_CORTEX_A5_P(n) ((n & 0xff0ff0f0) == 0x410fc050)
231236
#define CPU_ID_CORTEX_A7_P(n) ((n & 0xff0ff0f0) == 0x410fc070)
232237
#define CPU_ID_CORTEX_A8_P(n) ((n & 0xff0ff0f0) == 0x410fc080)
233238
#define CPU_ID_CORTEX_A9_P(n) ((n & 0xff0ff0f0) == 0x410fc090)
234239
#define CPU_ID_CORTEX_A15_P(n) ((n & 0xff0ff0f0) == 0x410fc0f0)
240+
#define CPU_ID_CORTEX_A53_P(n) ((n & 0xff0ff0f0) == 0x410fd030)
241+
#define CPU_ID_CORTEX_A57_P(n) ((n & 0xff0ff0f0) == 0x410fd070)
242+
#define CPU_ID_CORTEX_A72_P(n) ((n & 0xff0ff0f0) == 0x410fd080)
235243
#define CPU_ID_SA110 0x4401a100
236244
#define CPU_ID_SA1100 0x4401a110
237245
#define CPU_ID_TI925T 0x54029250

sys/arch/arm/include/vfpreg.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $NetBSD: vfpreg.h,v 1.14 2015/02/09 07:55:52 slp Exp $ */
1+
/* $NetBSD: vfpreg.h,v 1.15 2016/03/03 17:01:31 skrll Exp $ */
22

33
/*
44
* Copyright (c) 2008 ARM Ltd
@@ -65,6 +65,7 @@
6565
#define FPU_VFP_CORTEXA9 0x41033090
6666
#define FPU_VFP_CORTEXA15 0x410330f0
6767
#define FPU_VFP_CORTEXA15_QEMU 0x410430f0
68+
#define FPU_VFP_CORTEXA53 0x41034030
6869
#define FPU_VFP_MV88SV58XX 0x56022090
6970

7071
#define VFP_FPEXC_EX 0x80000000 /* EXception status bit */

sys/arch/arm/vfp/vfp_init.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $NetBSD: vfp_init.c,v 1.49 2015/11/12 10:49:35 jmcneill Exp $ */
1+
/* $NetBSD: vfp_init.c,v 1.50 2016/03/03 17:01:31 skrll Exp $ */
22

33
/*
44
* Copyright (c) 2008 ARM Ltd
@@ -95,6 +95,7 @@ load_vfpregs(const struct vfpreg *fregs)
9595
case FPU_VFP_CORTEXA9:
9696
case FPU_VFP_CORTEXA15:
9797
case FPU_VFP_CORTEXA15_QEMU:
98+
case FPU_VFP_CORTEXA53:
9899
#endif
99100
load_vfpregs_hi(fregs->vfp_regs);
100101
#ifdef CPU_ARM11
@@ -117,6 +118,7 @@ save_vfpregs(struct vfpreg *fregs)
117118
case FPU_VFP_CORTEXA9:
118119
case FPU_VFP_CORTEXA15:
119120
case FPU_VFP_CORTEXA15_QEMU:
121+
case FPU_VFP_CORTEXA53:
120122
#endif
121123
save_vfpregs_hi(fregs->vfp_regs);
122124
#ifdef CPU_ARM11
@@ -317,6 +319,7 @@ vfp_attach(struct cpu_info *ci)
317319
case FPU_VFP_CORTEXA9:
318320
case FPU_VFP_CORTEXA15:
319321
case FPU_VFP_CORTEXA15_QEMU:
322+
case FPU_VFP_CORTEXA53:
320323
if (armreg_cpacr_read() & CPACR_V7_ASEDIS) {
321324
model = "VFP 4.0+";
322325
} else {

0 commit comments

Comments
 (0)