summaryrefslogtreecommitdiffstats
path: root/arch/arm/lib
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2016-04-01 11:02:18 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2016-04-01 14:00:29 +0200
commitf6b77fe9f9439564d312e75fe713f61b0467c8f8 (patch)
tree627d52efe2006394fdbb59fe5d6d95a98d415a78 /arch/arm/lib
parent75c96bd2459ea013bf6bf4eea7f53094a4d66e93 (diff)
downloadbarebox-f6b77fe9f9439564d312e75fe713f61b0467c8f8.tar.gz
barebox-f6b77fe9f9439564d312e75fe713f61b0467c8f8.tar.xz
ARM: Rework vector table setup
The current vector table setup has some shortcomings. First of all currently the case when the high vectors are inside SDRAM (that is, SDRAM reaches the end of the address space) is not supported. In this case we create a secondary page table for the section containing the vectors which gets overwritten by the general SDRAM secondary page table entries creation afterwards. On ARMv7 and later the exception table setup can be improved: Here the vector table address is configurable in the VBAR register. We can use this register to skip remapping the vector table. With this patch we first try to use the VBAR register before doing something else. Also, when we have to use the high vectors we first try a request_sdram_region to test if the vector table memory is already mapped. While at it sprinkle some comments into the code. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/lib')
-rw-r--r--arch/arm/lib/barebox.lds.S1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/arm/lib/barebox.lds.S b/arch/arm/lib/barebox.lds.S
index 5344557860..6dc8bd2f3c 100644
--- a/arch/arm/lib/barebox.lds.S
+++ b/arch/arm/lib/barebox.lds.S
@@ -43,6 +43,7 @@ SECTIONS
__bare_init_start = .;
*(.text_bare_init*)
__bare_init_end = .;
+ . = ALIGN(4);
__exceptions_start = .;
KEEP(*(.text_exceptions*))
__exceptions_stop = .;