From b2323be33b5a89cc244d4488b21263a359aced96 Mon Sep 17 00:00:00 2001 From: Rafaël Carré Date: Sun, 24 Jan 2010 15:04:21 +0000 Subject: ARM: lr addresses the next instruction after the failing one in undefined instruction vector Substract 4 before passing the argument to UIE so the correct address is displayed git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24321 a1c6a512-1295-4272-9138-f99709370657 --- firmware/target/arm/crt0-pp.S | 2 +- firmware/target/arm/crt0.S | 2 +- firmware/target/arm/imx31/crt0.S | 2 +- firmware/target/arm/pnx0101/crt0-pnx0101.S | 2 +- firmware/target/arm/s3c2440/crt0.S | 2 +- firmware/target/arm/s5l8700/crt0.S | 2 +- firmware/target/arm/tcc77x/crt0.S | 2 +- firmware/target/arm/tcc780x/crt0.S | 2 +- firmware/target/arm/tms320dm320/crt0.S | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/firmware/target/arm/crt0-pp.S b/firmware/target/arm/crt0-pp.S index bd1fc035c9..9c996960cc 100644 --- a/firmware/target/arm/crt0-pp.S +++ b/firmware/target/arm/crt0-pp.S @@ -348,7 +348,7 @@ vectors: in UIE. */ undef_instr_handler: - mov r0, lr + sub r0, lr, #4 mov r1, #0 b UIE diff --git a/firmware/target/arm/crt0.S b/firmware/target/arm/crt0.S index 4bd01e4952..79cfdb3e1b 100644 --- a/firmware/target/arm/crt0.S +++ b/firmware/target/arm/crt0.S @@ -124,7 +124,7 @@ newstart: * we're in. Second parameter is exception number, used for a string lookup * in UIE. */ undef_instr_handler: - mov r0, lr + sub r0, lr, #4 mov r1, #0 b UIE diff --git a/firmware/target/arm/imx31/crt0.S b/firmware/target/arm/imx31/crt0.S index 4afec85568..0841cb9276 100644 --- a/firmware/target/arm/imx31/crt0.S +++ b/firmware/target/arm/imx31/crt0.S @@ -341,7 +341,7 @@ remap_end: * we're in. Second parameter is exception number, used for a string lookup * in UIE. */ undef_instr_handler: - mov r0, lr + sub r0, lr, #4 mov r1, #0 b UIE diff --git a/firmware/target/arm/pnx0101/crt0-pnx0101.S b/firmware/target/arm/pnx0101/crt0-pnx0101.S index d785d09a3b..c8c4232a3a 100644 --- a/firmware/target/arm/pnx0101/crt0-pnx0101.S +++ b/firmware/target/arm/pnx0101/crt0-pnx0101.S @@ -174,7 +174,7 @@ vectors: in UIE. */ undef_instr_handler: - mov r0, lr + sub r0, lr, #4 mov r1, #0 b UIE diff --git a/firmware/target/arm/s3c2440/crt0.S b/firmware/target/arm/s3c2440/crt0.S index 2188bc07da..086cc4a8bd 100644 --- a/firmware/target/arm/s3c2440/crt0.S +++ b/firmware/target/arm/s3c2440/crt0.S @@ -569,7 +569,7 @@ stackmunge: in UIE. */ undef_instr_handler: - mov r0, lr + sub r0, lr, #4 mov r1, #0 b UIE diff --git a/firmware/target/arm/s5l8700/crt0.S b/firmware/target/arm/s5l8700/crt0.S index 67bcc5a796..bb6d910e22 100644 --- a/firmware/target/arm/s5l8700/crt0.S +++ b/firmware/target/arm/s5l8700/crt0.S @@ -508,7 +508,7 @@ start_loc: * we're in. Second parameter is exception number, used for a string lookup * in UIE. */ undef_instr_handler: - mov r0, lr + sub r0, lr, #4 mov r1, #0 b UIE diff --git a/firmware/target/arm/tcc77x/crt0.S b/firmware/target/arm/tcc77x/crt0.S index 2c5af3f21b..16b80920f4 100644 --- a/firmware/target/arm/tcc77x/crt0.S +++ b/firmware/target/arm/tcc77x/crt0.S @@ -218,7 +218,7 @@ vectors_end: in UIE. */ undef_instr_handler: - mov r0, lr + sub r0, lr, #4 mov r1, #0 b UIE diff --git a/firmware/target/arm/tcc780x/crt0.S b/firmware/target/arm/tcc780x/crt0.S index f02a204d7e..b1608915f1 100644 --- a/firmware/target/arm/tcc780x/crt0.S +++ b/firmware/target/arm/tcc780x/crt0.S @@ -285,7 +285,7 @@ vectors_end: in UIE. */ undef_instr_handler: - mov r0, lr + sub r0, lr, #4 mov r1, #0 b UIE diff --git a/firmware/target/arm/tms320dm320/crt0.S b/firmware/target/arm/tms320dm320/crt0.S index fe4a3fb970..e774152336 100644 --- a/firmware/target/arm/tms320dm320/crt0.S +++ b/firmware/target/arm/tms320dm320/crt0.S @@ -137,7 +137,7 @@ start_loc: in UIE. */ undef_instr_handler: - mov r0, lr + sub r0, lr, #4 mov r1, #0 b UIE -- cgit v1.2.3