33 lines
902 B
ArmAsm
33 lines
902 B
ArmAsm
.section ".text", "ax"
|
|
.org 0x200
|
|
.global entry64
|
|
entry64: // 64-bit entry point for kernel decompression
|
|
// get the cckernel image base. if the opcode generated by the assembler changes, this will break
|
|
lea -0x207(%rip), %rdi
|
|
|
|
// we might get some stack space from the previous kernel, but we have no idea how much
|
|
// it could just be a few bytes for all we know. it's far safer to just use our own
|
|
mov $einit_stack, %rsp
|
|
mov %rsp, %rbp
|
|
|
|
// lets get out of here -- ccmain(rdi: IMGBASE, rsi: BOOTPARAMS)
|
|
call ccmain
|
|
|
|
// what the fuck is going on, why have you returned here, was my work not enough for you
|
|
// ungrateful fucking machine. away with you, you do not deserve the privilege of my
|
|
// loving grace.
|
|
int3
|
|
int3
|
|
int3
|
|
int3
|
|
|
|
// begone
|
|
cli
|
|
1: hlt
|
|
jmp 1b
|
|
|
|
.section ".bss"
|
|
init_stack: // this should be sufficient for kernel decompression
|
|
.skip 0x10000, 0
|
|
einit_stack:
|