* 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.
This commit is contained in:
parent
84beb0eeb9
commit
0d1fd0113b
3 changed files with 26 additions and 0 deletions
|
@ -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.
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in a new issue