Please commit and push. On 27.11.2014 15:25, Andrei Borzenkov wrote: > В Tue, 25 Nov 2014 11:43:57 +0000 > Leif Lindholm <leif.lindh...@linaro.org> пишет: > >> 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? > > Yes, you are the best expert here. > >> >> / >> 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 > > > _______________________________________________ > 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