On 25.11.2014 13:43, Leif Lindholm wrote: > On Thu, Nov 20, 2014 at 09:53:14PM +0100, David Kozub wrote: >> The unaligned local in __aeabi_uidivmod leads to a store to a 64bit >> value at an address that is not divisible by 8 (in grub_divmod64). >> The compiler most likely generates a STRD instruction to store it and >> this causes an exception. >> >> Fixes Savannah bug #43632. > > I agree with this patch - am I OK to push? > Go ahead. > / > Leif > >> This includes improvements done by Leif Lindholm. >> --- >> ChangeLog | 6 ++++++ >> grub-core/kern/arm/misc.S | 14 +++++++------- >> 2 files changed, 13 insertions(+), 7 deletions(-) >> >> diff --git a/ChangeLog b/ChangeLog >> index 6fbec06..8728c04 100644 >> --- a/ChangeLog >> +++ b/ChangeLog >> @@ -1,3 +1,9 @@ >> +2014-11-21 David Kozub <zub....@gmail.com> >> + >> + * grub-core/kern/arm/misc.S: fix unaligned 64bit local variable >> + in __aeabi_uidivmod >> + Fixes Savannah bug #43632. >> + >> 2014-11-20 Andrei Borzenkov <arvidj...@gmail.com> >> >> * tests/util/grub-fs-tester.in: Consistently print output >> diff --git a/grub-core/kern/arm/misc.S b/grub-core/kern/arm/misc.S >> index 8943cc3..16b6f8e 100644 >> --- a/grub-core/kern/arm/misc.S >> +++ b/grub-core/kern/arm/misc.S >> @@ -60,17 +60,17 @@ FUNCTION(__aeabi_lmul) >> >> .macro division parent >> >> - stmfd sp!, {lr} >> - sub sp, sp, #12 >> + sub sp, sp, #8 @ Allocate naturally aligned 64-bit space >> + stmfd sp!, {r3,lr} @ Dummy r3 to maintain stack alignment >> + add r3, sp, #8 @ Set r3 to address of 64-bit space >> + str r3, [sp] @ Stack parameter, pointer to 64-bit space >> mov r2, r1 >> - add r1, sp, #4 >> - str r1, [sp, #0] >> mov r1, #0 >> mov r3, #0 >> bl \parent >> - ldr r1, [sp, #4] >> - add sp, sp, #12 >> - ldmfd sp!, {lr} >> + ldr r1, [sp, #8] @ Extract remainder >> + ldmfd sp!, {r3,lr} @ Pop into an unused arg/scratch register >> + add sp, sp, #8 >> bx lr >> .endm >> >> -- >> 2.1.1 >> >> >> _______________________________________________ >> Grub-devel mailing list >> Grub-devel@gnu.org >> https://lists.gnu.org/mailman/listinfo/grub-devel > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/grub-devel >
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel