]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* include/grub/mips/loongson.h (GRUB_CPU_LOONGSON_COP0_PRID): New
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 19 Aug 2011 21:04:18 +0000 (23:04 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 19 Aug 2011 21:04:18 +0000 (23:04 +0200)
define.
* grub-core/kern/mips/loongson/init.c (grub_machine_init): Check
that PRID matches the detected subplatform and reset the subplatform
if it doesn't.

ChangeLog
grub-core/kern/mips/loongson/init.c
include/grub/mips/loongson.h

index 5e45756c8e591cab3cf51de401434416b90a9932..23283d9240d8d6e289f92b4fde1dcfddb94718f1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-08-19  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * include/grub/mips/loongson.h (GRUB_CPU_LOONGSON_COP0_PRID): New
+       define.
+       * grub-core/kern/mips/loongson/init.c (grub_machine_init): Check
+       that PRID matches the detected subplatform and reset the subplatform
+       if it doesn't.
+
 2011-08-19  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/kern/misc.c (grub_vprintf): Fix a bug on malloc failure.
index 0e4948beb4d3ac74c59edb43bf2150a04d09a684..7df0ec8761558fc703fd7d487d5241c12a203fb2 100644 (file)
@@ -123,6 +123,23 @@ void
 grub_machine_init (void)
 {
   grub_addr_t modend;
+  grub_uint32_t prid;
+
+  asm volatile ("mfc0 %0, " GRUB_CPU_LOONGSON_COP0_PRID : "=r" (prid));
+
+  switch (prid)
+    {
+      /* Loongson 2E.  */
+    case 0x6302:
+      grub_arch_machine = GRUB_ARCH_MACHINE_FULOONG2E;
+      break;
+      /* Loongson 2F.  */
+    case 0x6303:
+      if (grub_arch_machine != GRUB_ARCH_MACHINE_FULOONG2F
+         && grub_arch_machine != GRUB_ARCH_MACHINE_YEELOONG)
+       grub_arch_machine = GRUB_ARCH_MACHINE_YEELOONG;
+      break;
+    }
 
   /* FIXME: measure this.  */
   if (grub_arch_busclock == 0)
index ce5eb5e3d3b83741f3a0232bcfa4e46f2fc51f16..e6f0241f2d53963454890e79923f89c755f0ec8c 100644 (file)
@@ -66,6 +66,7 @@
 #define GRUB_CPU_LOONGSON_COP0_BADVADDR GRUB_CPU_REGISTER_WRAP($8)
 #define GRUB_CPU_LOONGSON_COP0_CAUSE GRUB_CPU_REGISTER_WRAP($13)
 #define GRUB_CPU_LOONGSON_COP0_EPC GRUB_CPU_REGISTER_WRAP($14)
+#define GRUB_CPU_LOONGSON_COP0_PRID GRUB_CPU_REGISTER_WRAP($15)
 #define GRUB_CPU_LOONGSON_COP0_CACHE_TAGLO GRUB_CPU_REGISTER_WRAP($28)
 #define GRUB_CPU_LOONGSON_COP0_CACHE_TAGHI GRUB_CPU_REGISTER_WRAP($29)