mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 00:14:32 -08:00
Make build_symbol_table.py output statistics on the symbol table it builds, and emit warnings for zero-length symbols. Also added lengths to several functions defined in asm that this uncovered.
64 lines
1.3 KiB
ArmAsm
64 lines
1.3 KiB
ArmAsm
MAGIC equ 'j6KERNEL' ; jsix kernel header magic number
|
|
|
|
section .header
|
|
align 8
|
|
global _kernel_header: data hidden
|
|
_kernel_header:
|
|
dq MAGIC ; Kernel header magic
|
|
dw 32 ; Kernel header length
|
|
dw 2 ; Header version 2
|
|
dw VERSION_MAJOR ; Kernel version
|
|
dw VERSION_MINOR
|
|
dw VERSION_PATCH
|
|
dw 0 ; reserved
|
|
dd VERSION_GITSHA
|
|
dq 0 ; Flags
|
|
|
|
section .text
|
|
align 16
|
|
global _kernel_start: function hidden (_kernel_start.end - _kernel_start)
|
|
global _kernel_start.real: function hidden
|
|
_kernel_start:
|
|
push rbp ; Never executed, fake function prelude
|
|
mov rbp, rsp ; to calm down gdb
|
|
|
|
.real:
|
|
cli
|
|
|
|
mov rsp, idle_stack_end
|
|
sub rsp, 16
|
|
mov rbp, rsp
|
|
|
|
extern kernel_main
|
|
call kernel_main
|
|
|
|
; Kernel init is over, fall through to bsp_idle and wait for
|
|
; the scheduler to take over
|
|
.end:
|
|
|
|
global bsp_idle: function hidden (bsp_idle.end - bsp_idle)
|
|
bsp_idle:
|
|
hlt
|
|
jmp bsp_idle
|
|
.end:
|
|
|
|
global interrupts_enable: function hidden (interrupts_enable.end - interrupts_enable)
|
|
interrupts_enable:
|
|
sti
|
|
ret
|
|
.end:
|
|
|
|
global interrupts_disable: function hidden (interrupts_disable.end - interrupts_disable)
|
|
interrupts_disable:
|
|
cli
|
|
ret
|
|
.end:
|
|
|
|
section .bss
|
|
align 0x100
|
|
idle_stack_begin:
|
|
resb 0x4000 ; 16KiB stack space
|
|
|
|
global idle_stack_end: data hidden
|
|
idle_stack_end:
|