diff options
-rw-r--r-- | src/sys/arch/amd64/conf/user.ld | 28 | ||||
-rw-r--r-- | src/sys/arch/amd64/os/os_proc.c | 2 |
2 files changed, 30 insertions, 0 deletions
diff --git a/src/sys/arch/amd64/conf/user.ld b/src/sys/arch/amd64/conf/user.ld new file mode 100644 index 0000000..004509a --- /dev/null +++ b/src/sys/arch/amd64/conf/user.ld @@ -0,0 +1,28 @@ +OUTPUT_FORMAT(elf64-x86-64) +ENTRY(_start) + +SECTIONS +{ + . = 0x1000; + + .text : ALIGN(8) + { + *(.text) + } + + .rodata : ALIGN(8) + { + *(.rodata) + } + + .data : ALIGN(8) + { + *(.data) + } + + .bss : ALIGN(8) + { + *(COMMON) + *(.bss) + } +} diff --git a/src/sys/arch/amd64/os/os_proc.c b/src/sys/arch/amd64/os/os_proc.c index 61ef51e..7a65b34 100644 --- a/src/sys/arch/amd64/os/os_proc.c +++ b/src/sys/arch/amd64/os/os_proc.c @@ -137,5 +137,7 @@ md_set_ip(struct proc *procp, uintptr_t ip) pcbp = &procp->pcb; tfp = &pcbp->tf; tfp->rip = ip; + mmu_write_vas(&procp->pcb.vas); + __proc_kick(tfp); return 0; } |