|
@@ -807,7 +807,7 @@ void notrace handle_interruption(int code, struct pt_regs *regs)
|
|
|
}
|
|
|
|
|
|
|
|
|
-int __init check_ivt(void *iva)
|
|
|
+void __init initialize_ivt(const void *iva)
|
|
|
{
|
|
|
extern u32 os_hpmc_size;
|
|
|
extern const u32 os_hpmc[];
|
|
@@ -818,8 +818,8 @@ int __init check_ivt(void *iva)
|
|
|
u32 *hpmcp;
|
|
|
u32 length;
|
|
|
|
|
|
- if (strcmp((char *)iva, "cows can fly"))
|
|
|
- return -1;
|
|
|
+ if (strcmp((const char *)iva, "cows can fly"))
|
|
|
+ panic("IVT invalid");
|
|
|
|
|
|
ivap = (u32 *)iva;
|
|
|
|
|
@@ -839,28 +839,23 @@ int __init check_ivt(void *iva)
|
|
|
check += ivap[i];
|
|
|
|
|
|
ivap[5] = -check;
|
|
|
-
|
|
|
- return 0;
|
|
|
}
|
|
|
|
|
|
-#ifndef CONFIG_64BIT
|
|
|
-extern const void fault_vector_11;
|
|
|
-#endif
|
|
|
-extern const void fault_vector_20;
|
|
|
|
|
|
-void __init trap_init(void)
|
|
|
+/* early_trap_init() is called before we set up kernel mappings and
|
|
|
+ * write-protect the kernel */
|
|
|
+void __init early_trap_init(void)
|
|
|
{
|
|
|
- void *iva;
|
|
|
+ extern const void fault_vector_20;
|
|
|
|
|
|
- if (boot_cpu_data.cpu_type >= pcxu)
|
|
|
- iva = (void *) &fault_vector_20;
|
|
|
- else
|
|
|
-#ifdef CONFIG_64BIT
|
|
|
- panic("Can't boot 64-bit OS on PA1.1 processor!");
|
|
|
-#else
|
|
|
- iva = (void *) &fault_vector_11;
|
|
|
+#ifndef CONFIG_64BIT
|
|
|
+ extern const void fault_vector_11;
|
|
|
+ initialize_ivt(&fault_vector_11);
|
|
|
#endif
|
|
|
|
|
|
- if (check_ivt(iva))
|
|
|
- panic("IVT invalid");
|
|
|
+ initialize_ivt(&fault_vector_20);
|
|
|
+}
|
|
|
+
|
|
|
+void __init trap_init(void)
|
|
|
+{
|
|
|
}
|