From a35cdc698b892a963abe0b87890cf919a5288385 Mon Sep 17 00:00:00 2001 From: plutoo Date: Sat, 9 Sep 2017 03:33:38 +0200 Subject: [PATCH] Fixing bugs --- crt0/switch_crt0.s | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/crt0/switch_crt0.s b/crt0/switch_crt0.s index f6d6b120..33219c74 100644 --- a/crt0/switch_crt0.s +++ b/crt0/switch_crt0.s @@ -1,7 +1,8 @@ - .section ".crt0","ax" - .global _start, _sysexit, main +.section ".crt0","ax" +.global _start, _sysexit, main + _start: - bl startup + bl startup .word 0x454d4f48 .word 0x57455242 @@ -11,12 +12,13 @@ startup: sub x30, x30, #4 // clear .bss - ldr x0, =__bss_start__ - ldr x1, =__bss_end__ - sub x1, x1, x0 - add x1, x1, #7 + ldr x0, =__bss_start__ + ldr x1, =__bss_end__ + sub x1, x1, x0 // calculate size + add x1, x1, #7 // round up to 8 bic x1, x1, #7 mov x2, #0 + add x0, x0, x30 // relocate ptr bss_loop: str x2, [x0], #8 @@ -24,24 +26,26 @@ bss_loop: bne bss_loop // relocate .got - ldr x0, =__got_start__ - ldr x1, =__got_end__ - sub x1, x1, x0 - add x1, x1, #3 + ldr x0, =__got_start__ + ldr x1, =__got_end__ + sub x1, x1, x0 // calculate size + add x1, x1, #3 // round up to 4 bic x1, x1, #3 + add x0, x0, x30 // relocate ptr got_loop: ldr x2, [x0] - add x2, x2, x30 - str x2, [x0], #8 + ldr x3, [x2] + add x3, x3, x30 + str x3, [x2], #8 subs x1, x1, #8 bne got_loop - mov x0, #0 // argc - mov x1, #0 // argv + mov x0, #0 // argc + mov x1, #0 // argv - ldr x3, =main - blr x3 + ldr x3, =main + blr x3 _sysexit: - svc 0x7 + svc 0x7