mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-08-06 07:17:01 +02:00
examples: fix building on arm64
Commitf9886bc60f
("Added arm64 assembly for examples/api crt0") tried to add arm64 support to the examples but crt0.S does not even build for qemu_arm64_defconfig with CONFIG_API=y, CONFIG_EXAMPLES=y: examples/api/crt0.S: Assembler messages: examples/api/crt0.S:32: Error: expected a register at operand 1 -- `ldr ip,=search_hint' examples/api/crt0.S:33: Error: unexpected register type at operand 1 -- `str sp,[ip]' make[2]: *** [scripts/Makefile.build:292: examples/api/crt0.o] Error 1 Do not define _start twice. Use valid register names. Move syscall_ptr and search_hint to the data section to avoid an invalid relocation. Fixes:f9886bc60f
("Added arm64 assembly for examples/api crt0") Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
This commit is contained in:
parent
e2635570e0
commit
a3c101a613
@ -24,7 +24,7 @@ syscall:
|
|||||||
mtctr %r11
|
mtctr %r11
|
||||||
bctr
|
bctr
|
||||||
|
|
||||||
#elif defined(CONFIG_ARM)
|
#elif defined(CONFIG_ARM) && !defined(CONFIG_ARM64)
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.globl _start
|
.globl _start
|
||||||
@ -33,27 +33,28 @@ _start:
|
|||||||
str sp, [ip]
|
str sp, [ip]
|
||||||
b main
|
b main
|
||||||
|
|
||||||
#elif defined(CONFIG_ARM64)
|
|
||||||
|
|
||||||
.text
|
|
||||||
.globl _start
|
|
||||||
_start:
|
|
||||||
ldr ip0, =search_hint
|
|
||||||
str sp_el2, [ip0]
|
|
||||||
b main
|
|
||||||
|
|
||||||
|
|
||||||
.globl syscall
|
|
||||||
syscall:
|
|
||||||
ldr ip0, =syscall_ptr
|
|
||||||
ldr pc_el2, [ip0]
|
|
||||||
|
|
||||||
|
|
||||||
.globl syscall
|
.globl syscall
|
||||||
syscall:
|
syscall:
|
||||||
ldr ip, =syscall_ptr
|
ldr ip, =syscall_ptr
|
||||||
ldr pc, [ip]
|
ldr pc, [ip]
|
||||||
|
|
||||||
|
#elif defined(CONFIG_ARM64)
|
||||||
|
|
||||||
|
.text
|
||||||
|
.globl _start
|
||||||
|
_start:
|
||||||
|
ldr x17, =search_hint
|
||||||
|
mov x16, sp
|
||||||
|
str x16, [x17]
|
||||||
|
b main
|
||||||
|
|
||||||
|
.globl syscall
|
||||||
|
syscall:
|
||||||
|
ldr x16, =syscall_ptr
|
||||||
|
ldr x16, [x16]
|
||||||
|
br x16
|
||||||
|
|
||||||
#elif defined(CONFIG_MIPS)
|
#elif defined(CONFIG_MIPS)
|
||||||
#include <asm/asm.h>
|
#include <asm/asm.h>
|
||||||
.text
|
.text
|
||||||
@ -83,6 +84,8 @@ return_addr:
|
|||||||
#error No support for this arch!
|
#error No support for this arch!
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
.section .data
|
||||||
|
|
||||||
.globl syscall_ptr
|
.globl syscall_ptr
|
||||||
syscall_ptr:
|
syscall_ptr:
|
||||||
.align 8
|
.align 8
|
||||||
@ -90,4 +93,4 @@ syscall_ptr:
|
|||||||
|
|
||||||
.globl search_hint
|
.globl search_hint
|
||||||
search_hint:
|
search_hint:
|
||||||
.long 0
|
.long 0
|
||||||
|
Loading…
Reference in New Issue
Block a user