mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 08:24:32 -08:00
35 lines
669 B
ArmAsm
35 lines
669 B
ArmAsm
%include "push_all.inc"
|
|
|
|
extern load_process
|
|
|
|
global ramdisk_process_loader
|
|
ramdisk_process_loader:
|
|
|
|
; create_process already pushed a cpu_state onto the stack for us, this
|
|
; acts both as the cpu_state parameter to load_process, and the saved
|
|
; state for the following iretq
|
|
;
|
|
; Additional parameters:
|
|
; rax - the address of the program image
|
|
; rbx - the size of the program image
|
|
; rcx - the address of this process' process structure
|
|
mov rdi, rax
|
|
mov rsi, rbx
|
|
mov rdx, rcx
|
|
call load_process
|
|
|
|
swapgs
|
|
|
|
xor rax, rax
|
|
mov ax, ss
|
|
mov ds, ax
|
|
mov es, ax
|
|
mov fs, ax
|
|
mov gs, ax
|
|
|
|
pop_all_and_segments
|
|
add rsp, 16 ; because the ISRs add err/num
|
|
iretq
|
|
|
|
|