Separated functionality into separate files. Added initial (untested) support for ARM.

This commit is contained in:
2013-12-06 13:47:22 -05:00
parent e97e0b0cf5
commit da4cc8b645
10 changed files with 308 additions and 136 deletions

33
arch/arm-none-eabi/boot.s Normal file
View File

@ -0,0 +1,33 @@
.section ".text.boot"
.globl Start
Start:
// Setup the stack
mov sp, #0x8000
// Clear out bss
ldr r4, =_bss_start
ldr r9, =_bss_end
mov r5, #0
mov r6, #0
mov r7, #0
mov r8, #0
b 2f
1:
// Store multiple at r4
stmia r4!, {r5-r8}
2:
// If we are still below bss_end, loop
cmp r4, r9
blo 1b
// Call brados_main
ldr r3, =brados_main
blx r3
halt:
// Halt
wfe
b halt

View File

@ -0,0 +1,42 @@
ENTRY(Start)
SECTIONS
{
/* Starts at LOADER_ADDR */
. = 0x8000
_start = .;
_text_start = .;
.text:
{
KEEP(*(.text.boot))
*(.text)
}
. = ALIGN(4096);
_text_end = .;
_rodata_start = .;
.rodata:
{
*(.rodata)
}
. = ALIGN(4096)
_rodata_end = .;
_data_start = .;
.data:
{
*(.data)
}
. = ALIGN(4096);
_data_end = .;
_bss_start = .;
.bss:
{
bss = .;
*(.bss)
}
. = ALIGN(4096)
_bss_end = .;
_end = .;
}