.section .text.forth.root-process

// Starts executing the root process.
.global root_process.start
root_process.start:
	mov x16, #0
	mov x17, #0
	mov x18, #0
	mov x19, #0
	ldr x21, =root_process.context
	add x22, x21, #0x200
	mov x23, x22
	add x25, x21, #0x100
	mov x26, x25
	b forth.__root_process

.section .data.forth.root-process

.p2align 8, 0
.global root_process.context
root_process.context:
	.quad 0                                 // Low 64 Bits of PID
	.fill 1, 8                              // Saved Forth Insn Pointer
	.quad root_process.dictionary           // Dict Pointer
	.quad root_process.dictionary.len       // Dict Remaining Length
	.quad forth.__last_pseudobuiltin.header // Last Defined Header
	.fill 1, 8                              // Process Flags
	.quad root_process.source               // Source Address
	.quad root_process.source.len           // Source Length
	.fill 24, 8, 0
root_process.context.return_stack:
	.fill 256, 1, 0
root_process.context.stack:
	.fill 512, 1, 0
root_process.context.exn_return_stack:
	.fill 256, 1, 0
root_process.context.exn_stack:
	.fill 512, 1, 0
root_process.context.exn_cpu_stack:
	.fill 256, 1, 0

.section .data.forth.root-process

.global root_process.data, root_process.data.devicetree_ptr
root_process.data:
root_process.data.devicetree_ptr: .quad 0
root_process.data.kernel_start: .quad kernel_start
root_process.data.kernel_length: .quad kernel_length

.section .bss.forth.root-process.dictionary

.align 8
root_process.dictionary: .skip 1024*1024
.set root_process.dictionary.len, . - root_process.dictionary

// vi: set ft=arm64asm :