96 lines
2.0 KiB
Plaintext
96 lines
2.0 KiB
Plaintext
section .text,text
|
|
|
|
public syscall_exit
|
|
; Exits the process
|
|
syscall_exit:
|
|
move.l #0, d0
|
|
trap #0
|
|
rts
|
|
|
|
public syscall_yield
|
|
; Yields to the next process
|
|
syscall_yield:
|
|
move.l #1, d0
|
|
rts
|
|
|
|
public syscall_print
|
|
; Prints the string pointed to by d0
|
|
syscall_print:
|
|
move.l d0, d1
|
|
move.l #2, d0
|
|
trap #0
|
|
rts
|
|
|
|
public syscall_println
|
|
; Prints the string pointed to by d0 followed by a newline
|
|
syscall_println:
|
|
move.l d0, d1
|
|
move.l #3, d0
|
|
trap #0
|
|
rts
|
|
|
|
public syscall_vmem_map
|
|
; Maps the range of pages starting at address a0 with length d0 to free physical frames
|
|
; Permission flags in d1
|
|
syscall_vmem_map:
|
|
move.l d2, -(a7)
|
|
move.l d1, d2
|
|
move.l d0, d1
|
|
move.l #4, d0
|
|
trap #0
|
|
move.l (a7)+, d2
|
|
rts
|
|
|
|
public syscall_vmem_map_free
|
|
; Map a free range of pages with length d0 to free physical frames
|
|
; Returns the range start in a0
|
|
; Permission flags in d1
|
|
syscall_vmem_map_free:
|
|
move.l d2, -(a7)
|
|
move.l d1, d2
|
|
move.l d0, d1
|
|
move.l #5, d0
|
|
trap #0
|
|
move.l (a7)+, d2
|
|
rts
|
|
|
|
public syscall_vmem_map_free_to
|
|
; Maps a free range of virtual pages with length d1 to the range of physical frames starting at d0
|
|
; Returns the range start in a0
|
|
; Permission flags in d2
|
|
syscall_vmem_map_free_to:
|
|
move.l d3, -(a7)
|
|
move.l d2, d3
|
|
move.l d1, d2
|
|
move.l d0, d1
|
|
move.l #6, d0
|
|
trap #0
|
|
move.l (a7)+, d3
|
|
rts
|
|
|
|
public syscall_vmem_set_flags
|
|
; Sets the permission flags of the range of virtual pages starting at address a0 with length d1 to d0
|
|
syscall_vmem_set_flags:
|
|
move.l d2, -(a7)
|
|
move.l d1, d2
|
|
move.l d0, d1
|
|
move.l #7, d0
|
|
trap #0
|
|
move.l (a7)+, d2
|
|
rts
|
|
|
|
public syscall_vmem_copy_to_secondary
|
|
; Copies the range of page mappings at address a0 in the primary space with length d0 to the secondary space starting at address a1
|
|
syscall_vmem_copy_to_secondary:
|
|
move.l d0, d1
|
|
move.l #8, d0
|
|
trap #0
|
|
rts
|
|
|
|
public syscall_new_process
|
|
; Creates a new process using the secondary address space of the current process and entry in a0
|
|
syscall_new_process:
|
|
move.l #9, d0
|
|
trap #0
|
|
rts
|