From: Michal Simek Date: Thu, 10 Mar 2011 09:51:27 +0000 (+0100) Subject: microblaze: Fix microblaze init vectors X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=626afa35c1d39be43fc2b225d21973daf1c7e299;p=linux-beck.git microblaze: Fix microblaze init vectors Microblaze vector table stores several vectors (reset, user exception, interrupt, debug exception and hardware exception). All these functions can be below address 0x10000. If they are, wrong vector table is genarated because jump is not setup from two instructions (imm upper 16bit and brai lower 16bit). Adding specific offset prevent problem if address is below 0x10000. For this case only brai instruction is used. Signed-off-by: Michal Simek --- diff --git a/arch/microblaze/kernel/entry.S b/arch/microblaze/kernel/entry.S index e3c8d69e248b..d68a397e3936 100644 --- a/arch/microblaze/kernel/entry.S +++ b/arch/microblaze/kernel/entry.S @@ -998,10 +998,13 @@ ENTRY(_reset) /* in current MMU branch you don't care what is here - it is * used from bootloader site - but this is correct for FS-BOOT */ brai 0x70 - nop + .org 0x8 brai TOPHYS(_user_exception); /* syscall handler */ + .org 0x10 brai TOPHYS(_interrupt); /* Interrupt handler */ + .org 0x18 brai TOPHYS(_debug_exception); /* debug trap handler */ + .org 0x20 brai TOPHYS(_hw_exception_handler); /* HW exception handler */ .section .rodata,"a"