summaryrefslogtreecommitdiff
path: root/examples/api/crt0.S
diff options
context:
space:
mode:
authorStanislav Galabov <sgalabov@gmail.com>2016-02-17 15:23:31 +0200
committerDaniel Schwierzeck <daniel.schwierzeck@gmail.com>2016-05-21 01:25:50 +0200
commit78757d52c8b27f7f33ab4035706796a414c81128 (patch)
tree463a951b1ce5a32ac658a0cd48efdd97581a42a8 /examples/api/crt0.S
parent713a9e15bba4a5b6582d5e85fef2f282782cbed7 (diff)
downloadu-boot-78757d52c8b27f7f33ab4035706796a414c81128.tar.gz
Fix FreeBSD loader API so that it works on both 32-bit and 64-bit targets.
Specifically tested on MIPS under QEMU (works with all combination of bit-ness and endian-ness) Signed-off-by: Stanislav Galabov <sgalabov@gmail.com>
Diffstat (limited to 'examples/api/crt0.S')
-rw-r--r--examples/api/crt0.S13
1 files changed, 7 insertions, 6 deletions
diff --git a/examples/api/crt0.S b/examples/api/crt0.S
index ced2c82e5f..5a7049d6b4 100644
--- a/examples/api/crt0.S
+++ b/examples/api/crt0.S
@@ -41,28 +41,29 @@ syscall:
ldr pc, [ip]
#elif defined(CONFIG_MIPS)
+#include <asm/asm.h>
.text
.globl __start
.ent __start
__start:
- sw $sp, search_hint
+ PTR_S $sp, search_hint
b main
.end __start
.globl syscall
.ent syscall
syscall:
- sw $ra, return_addr
- lw $t9, syscall_ptr
+ PTR_S $ra, return_addr
+ PTR_L $t9, syscall_ptr
jalr $t9
nop
- lw $ra, return_addr
+ PTR_L $ra, return_addr
jr $ra
nop
.end syscall
return_addr:
- .align 4
+ .align 8
.long 0
#else
#error No support for this arch!
@@ -70,7 +71,7 @@ return_addr:
.globl syscall_ptr
syscall_ptr:
- .align 4
+ .align 8
.long 0
.globl search_hint