diff options
author | Helge Deller <deller@gmx.de> | 2015-11-20 10:50:01 +0100 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2015-11-22 12:22:43 +0100 |
commit | 4182d0cdf853fb044b969318289ae9f451f69c86 (patch) | |
tree | 7601eb68a3601c5124cbe511fb3bd0ae90a93af2 /arch/parisc/kernel/entry.S | |
parent | 1f25ad26d65b3740f44d6e03edcd34a5f7b58850 (diff) | |
download | op-kernel-dev-4182d0cdf853fb044b969318289ae9f451f69c86.zip op-kernel-dev-4182d0cdf853fb044b969318289ae9f451f69c86.tar.gz |
parisc: Initialize the fault vector earlier in the boot process.
A fault vector on parisc needs to be 2K aligned. Furthermore the
checksum of the fault vector needs to sum up to 0 which is being
calculated and written at runtime.
Up to now we aligned both PA20 and PA11 fault vectors on the same 4K
page in order to easily write the checksum after having mapped the
kernel read-only (by mapping this page only as read-write).
But when we want to map the kernel text and data on huge pages this
makes things harder.
So, simplify it by aligning both fault vectors on 2K boundries and write
the checksum before we map the page read-only.
Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'arch/parisc/kernel/entry.S')
-rw-r--r-- | arch/parisc/kernel/entry.S | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S index c5ef408..b2fdc44 100644 --- a/arch/parisc/kernel/entry.S +++ b/arch/parisc/kernel/entry.S @@ -646,17 +646,12 @@ /* - * Align fault_vector_20 on 4K boundary so that both - * fault_vector_11 and fault_vector_20 are on the - * same page. This is only necessary as long as we - * write protect the kernel text, which we may stop - * doing once we use large page translations to cover - * the static part of the kernel address space. + * Fault_vectors are architecturally required to be aligned on a 2K + * boundary */ .text - - .align 4096 + .align 2048 ENTRY(fault_vector_20) /* First vector is invalid (0) */ |