m1n1/src/start.S

62 lines
894 B
ArmAsm
Raw Normal View History

/* SPDX-License-Identifier: MIT */
#define UART_BASE 0x235200000
#define UTRSTAT 0x010
#define UTXH 0x020
.extern _start_c
.extern _stack_bot
.section .init, "ax"
.globl _start
.type _start, @function
_start:
mov x9, x0
mov w0, 'm'
bl debug_putc
mov w0, '1'
bl debug_putc
adrp x1, _stack_bot
mov sp, x1
mov w0, 'n'
bl debug_putc
adrp x0, _base
mov x10, x0
adrp x1, _rela_start
add x1, x1, :lo12:_rela_start
adrp x2, _rela_end
add x2, x2, :lo12:_rela_end
bl apply_rela
mov w0, '1'
bl debug_putc
mov w0, '\r'
bl debug_putc
mov w0, '\n'
bl debug_putc
mov x0, x9
mov x1, x10
bl _start_c
b .
.globl debug_putc
.type debug_putc, @function
debug_putc:
ldr x1, =UART_BASE
1:
ldr w2, [x1, UTRSTAT]
tst w2, #2
beq 1b
str w0, [x1, UTXH]
ret
.pool