stkarm/src/kernel.s

66 lines
832 B
ArmAsm

.extern f
.text
my_string:
.string "HELLO WORLD!\r\n\r\n"
.quad 0x00
.quad 0x5a
.align 4
.global _start
_start:
/* does nothing special */
mov r13, #0x8000
mov r1, #16
1:
ldr r0, =my_string
bl printk
sub r1, #1
cmp r1, #0
b 1b
lup:
b lup
.global printk
printk:
stmfd r13!, {r0, r1, r2, r3, r4, r14}
/* disable UART interrupts */
mov r2, #0x8004
movt r2, #0x01c2
ldr r1, [r2]
and r1, #0xfffffffc
str r1, [r2]
/* mask interrupts in CPU */
cpsid if
/* TBR */
mov r2, #0x8000
movt r2, #0x01c2
1:
ldr r1, [r0]
add r0, #4
mov r4, #4
2:
and r3, r1, #0xff
mov r1, r1, lsr#8
cmp r3, #0
beq 3f
str r3, [r2]
sub r4, #1
cmp r4, #0
bne 2b
b 1b
3:
ldmfd r13!, {r0, r1, r2, r3, r4, r15}