]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Add explicit thumb interwork bx in asm files.
authorVladimir Serbinenko <phcoder@gmail.com>
Tue, 17 Dec 2013 13:50:44 +0000 (14:50 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Tue, 17 Dec 2013 13:50:44 +0000 (14:50 +0100)
Shouldn't matter for armv >= 5 but let's be safe.

ChangeLog
grub-core/kern/arm/cache.S
grub-core/kern/arm/cache_armv7.S
grub-core/kern/arm/uboot/startup.S

index e2670c5e6d2b1dcce037d85fb8e18c98f80e85f9..6a9dda97f9ff513cca40b7d9ce5403cb0524c382 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-12-17  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       Add explicit thumb interwork bx in asm files.
+
+       Shouldn't matter for armv >= 5 but let's be safe.
+
 2013-12-17  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Implement Truecrypt ISO loader.
index 2ad774d9009362a8bbccb2cc30dcf6226e1ab5b8..3763b7800f5419ad40c58cd5dc7a613799e31b10 100644 (file)
@@ -95,7 +95,8 @@ FUNCTION(grub_arch_sync_caches_armv7)
        bl      clean_dcache_range
        pop     {r0, r1}
        bl      invalidate_icache_range
-       pop     {r2, pc}
+       pop     {r2, lr}
+       bx      lr
 
 #ifdef ARMV6
 FUNCTION(grub_arm_disable_caches_mmu_armv6)
@@ -137,5 +138,6 @@ FUNCTION(grub_arm_disable_caches_mmu_armv7)
        DSB
        ISB
 
-       pop     {r4, pc}
+       pop     {r4, lr}
+       bx      lr
 
index aa42fad81ea71fcacda63ea5022a327549cda823..1ef2754af8a7612c35c26011fab442dbba074dfd 100644 (file)
@@ -120,6 +120,7 @@ clean_invalidate_dcache:
        @ return
 6:     DSB
        ISB
-       pop     {r4-r12, pc}
+       pop     {r4-r12, lr}
+       bx      lr
 
 #include "cache.S"
\ No newline at end of file
index 3e1c1f2d67d97d07fcdd8e95556f5ebc2f2c90c8..0c4a5f6705733ca6a016f242e17783c4e549b555 100644 (file)
@@ -135,14 +135,17 @@ FUNCTION(grub_uboot_syscall)
        ldr     r8, gd_backup
        ldr     r9, gd_backup + 4
 
-       mov     lr, pc
-       ldr     pc, grub_uboot_syscall_ptr
+       bl      do_syscall
 
        ldr     r8, transition_space
        ldr     lr, transition_space + 4
        ldr     r9, transition_space + 8
 
        bx      lr
+do_syscall:
+
+       ldr     ip, grub_uboot_syscall_ptr
+       bx      ip
        
 FUNCTION(grub_uboot_return)
        adr     sp, entry_state_end