|
@@ -818,9 +818,19 @@ void __init early_trap_init(void *vectors_base)
|
|
|
extern char __vectors_start[], __vectors_end[];
|
|
|
extern char __kuser_helper_start[], __kuser_helper_end[];
|
|
|
int kuser_sz = __kuser_helper_end - __kuser_helper_start;
|
|
|
+ unsigned i;
|
|
|
|
|
|
vectors_page = vectors_base;
|
|
|
|
|
|
+ /*
|
|
|
+ * Poison the vectors page with an undefined instruction. This
|
|
|
+ * instruction is chosen to be undefined for both ARM and Thumb
|
|
|
+ * ISAs. The Thumb version is an undefined instruction with a
|
|
|
+ * branch back to the undefined instruction.
|
|
|
+ */
|
|
|
+ for (i = 0; i < PAGE_SIZE / sizeof(u32); i++)
|
|
|
+ ((u32 *)vectors_base)[i] = 0xe7fddef1;
|
|
|
+
|
|
|
/*
|
|
|
* Copy the vectors, stubs and kuser helpers (in entry-armv.S)
|
|
|
* into the vector page, mapped at 0xffff0000, and ensure these
|