Module Name: src
Committed By: macallan
Date: Sat Nov 22 15:02:39 UTC 2014
Modified Files:
src/sys/arch/mips/include: cpuregs.h locore.h
src/sys/arch/mips/mips: mips_machdep.c
Log Message:
deal with Ingenic XBurst CPUs
To generate a diff of this commit:
cvs rdiff -u -r1.88 -r1.89 src/sys/arch/mips/include/cpuregs.h
cvs rdiff -u -r1.93 -r1.94 src/sys/arch/mips/include/locore.h
cvs rdiff -u -r1.260 -r1.261 src/sys/arch/mips/mips/mips_machdep.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/mips/include/cpuregs.h
diff -u src/sys/arch/mips/include/cpuregs.h:1.88 src/sys/arch/mips/include/cpuregs.h:1.89
--- src/sys/arch/mips/include/cpuregs.h:1.88 Sat Oct 29 18:56:49 2011
+++ src/sys/arch/mips/include/cpuregs.h Sat Nov 22 15:02:39 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: cpuregs.h,v 1.88 2011/10/29 18:56:49 jakllsch Exp $ */
+/* $NetBSD: cpuregs.h,v 1.89 2014/11/22 15:02:39 macallan Exp $ */
/*
* Copyright (c) 2009 Miodrag Vallat.
@@ -973,6 +973,11 @@
#define MIPS_eMIPS 0x04 /* MSR's eMIPS */
/*
+ * CPU processor revision IDs for company ID == e1 (Ingenic)
+ */
+#define MIPS_XBURST 0x02 /* Ingenic XBurst */
+
+/*
* FPU processor revision ID
*/
#define MIPS_SOFT 0x00 /* Software emulation ISA I */
Index: src/sys/arch/mips/include/locore.h
diff -u src/sys/arch/mips/include/locore.h:1.93 src/sys/arch/mips/include/locore.h:1.94
--- src/sys/arch/mips/include/locore.h:1.93 Sun Feb 19 21:06:16 2012
+++ src/sys/arch/mips/include/locore.h Sat Nov 22 15:02:39 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.h,v 1.93 2012/02/19 21:06:16 rmind Exp $ */
+/* $NetBSD: locore.h,v 1.94 2014/11/22 15:02:39 macallan Exp $ */
/*
* This file should not be included by MI code!!!
@@ -421,6 +421,7 @@ void mips_page_physload(vaddr_t, vaddr_t
/* 0x0a unannounced */
#define MIPS_PRID_CID_LEXRA 0x0b /* Lexra */
#define MIPS_PRID_CID_RMI 0x0c /* RMI / NetLogic */
+#define MIPS_PRID_CID_INGENIC 0xe1
#define MIPS_PRID_COPTS(x) (((x) >> 24) & 0x00ff) /* Company Options */
#ifdef _KERNEL
Index: src/sys/arch/mips/mips/mips_machdep.c
diff -u src/sys/arch/mips/mips/mips_machdep.c:1.260 src/sys/arch/mips/mips/mips_machdep.c:1.261
--- src/sys/arch/mips/mips/mips_machdep.c:1.260 Mon Jun 2 04:57:02 2014
+++ src/sys/arch/mips/mips/mips_machdep.c Sat Nov 22 15:02:39 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: mips_machdep.c,v 1.260 2014/06/02 04:57:02 mrg Exp $ */
+/* $NetBSD: mips_machdep.c,v 1.261 2014/11/22 15:02:39 macallan Exp $ */
/*
* Copyright 2002 Wasabi Systems, Inc.
@@ -111,7 +111,7 @@
*/
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
-__KERNEL_RCSID(0, "$NetBSD: mips_machdep.c,v 1.260 2014/06/02 04:57:02 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mips_machdep.c,v 1.261 2014/11/22 15:02:39 macallan Exp $");
#define __INTR_PRIVATE
#include "opt_cputype.h"
@@ -175,7 +175,12 @@ __KERNEL_RCSID(0, "$NetBSD: mips_machdep
#define _MTC0_V0_USERLOCAL _MKINSN(OP_COP0, OP_DMT, _R_V0, MIPS_COP_0_TLB_CONTEXT, 2)
#else
#define _LOAD_V0_L_PRIVATE_A0 _MKINSN(OP_LW, _R_A0, _R_V0, 0, offsetof(lwp_t, l_private))
-#define _MTC0_V0_USERLOCAL _MKINSN(OP_COP0, OP_MT, _R_V0, MIPS_COP_0_TLB_CONTEXT, 2)
+/*
+ * XXX
+ * the asm code in mipsX_subr.S uses ,4 - the definition above probably needs
+ * the same fix
+ */
+#define _MTC0_V0_USERLOCAL _MKINSN(OP_COP0, OP_MT, _R_V0, MIPS_COP_0_TLB_CONTEXT, 4)
#endif
#define JR_RA _MKINSN(OP_SPECIAL, _R_RA, 0, 0, OP_JR)
@@ -628,6 +633,10 @@ static const struct pridtab cputab[] = {
{ MIPS_PRID_CID_MICROSOFT, MIPS_eMIPS, 1, -1, CPU_ARCH_MIPS1, 64,
CPU_MIPS_NO_WAIT, 0, 0, "eMIPS CPU" },
+ /* Ingenic XBurst */
+ { MIPS_PRID_CID_INGENIC, MIPS_XBURST, -1, -1, -1, 0,
+ MIPS32_FLAGS | CPU_MIPS_DOUBLE_COUNT, 0, 0, "XBurst" },
+
{ 0, 0, 0, 0, 0, 0,
0, 0, 0, NULL }
};
@@ -1417,7 +1426,9 @@ cpu_identify(device_t dev)
if (opts->mips_cpu->cpu_cid != 0) {
if (opts->mips_cpu->cpu_cid <= ncidnames)
aprint_normal("%s ", cidnames[opts->mips_cpu->cpu_cid]);
- else {
+ else if (opts->mips_cpu->cpu_cid == MIPS_PRID_CID_INGENIC) {
+ aprint_normal("Ingenic ");
+ } else {
aprint_normal("Unknown Company ID - 0x%x", opts->mips_cpu->cpu_cid);
aprint_normal_dev(dev, "");
}