Preserve syscall return value in RAX
All checks were successful
Build documentation / build-and-deploy (push) Successful in 49s
All checks were successful
Build documentation / build-and-deploy (push) Successful in 49s
This commit is contained in:
@@ -8,11 +8,11 @@ void app_main (void) {
|
||||
uintptr_t out_paddr;
|
||||
int mem_rid = m_proc_create_resource_mem (16, RV_PRIVATE, &out_paddr);
|
||||
|
||||
/* m_proc_map (out_paddr, M_PROC_MAP_BASE, 16, PM_PRESENT | PM_RW | PM_USER); */
|
||||
m_proc_map (out_paddr, M_PROC_MAP_BASE, 16, PM_PRESENT | PM_RW | PM_USER);
|
||||
|
||||
/* memset ((void*)M_PROC_MAP_BASE, 0, M_PAGE_SIZE * 16); */
|
||||
memset ((void*)M_PROC_MAP_BASE, 0, M_PAGE_SIZE * 16);
|
||||
|
||||
/* m_proc_unmap (M_PROC_MAP_BASE, 16); */
|
||||
m_proc_unmap (M_PROC_MAP_BASE, 16);
|
||||
|
||||
/* m_proc_drop_resource (mem_rid); */
|
||||
m_proc_drop_resource (mem_rid);
|
||||
}
|
||||
|
||||
@@ -35,4 +35,21 @@
|
||||
popq % rcx; \
|
||||
popq % rax;
|
||||
|
||||
#define pop_regs_skip_rax \
|
||||
popq % r15; \
|
||||
popq % r14; \
|
||||
popq % r13; \
|
||||
popq % r12; \
|
||||
popq % r11; \
|
||||
popq % r10; \
|
||||
popq % r9; \
|
||||
popq % r8; \
|
||||
popq % rbx; \
|
||||
popq % rbp; \
|
||||
popq % rdi; \
|
||||
popq % rsi; \
|
||||
popq % rdx; \
|
||||
popq % rcx; \
|
||||
addq $8, % rsp
|
||||
|
||||
#endif // _KERNEL_AMD64_REGSASM_H
|
||||
|
||||
@@ -32,7 +32,7 @@ amd64_syscall_entry:
|
||||
|
||||
movq %rbp, %rsp
|
||||
|
||||
pop_regs
|
||||
pop_regs_skip_rax
|
||||
|
||||
addq $56, %rsp
|
||||
movq %gs:0, %rsp
|
||||
|
||||
@@ -83,8 +83,8 @@ struct proc_resource* proc_create_resource (struct proc* proc, int rid, int type
|
||||
struct proc_resource_mem_init* mem_init = data;
|
||||
proc_create_resource_mem (&resource->u.mem, mem_init);
|
||||
resource->ops.cleanup = &proc_cleanup_resource_mem;
|
||||
DEBUG ("resource=%p paddr=%p, pages=%zu\n", resource, resource->u.mem.paddr,
|
||||
resource->u.mem.pages);
|
||||
DEBUG ("resource=%p type=%d rid=%d paddr=%p, pages=%zu\n", resource, resource->type,
|
||||
resource->rid, resource->u.mem.paddr, resource->u.mem.pages);
|
||||
} break;
|
||||
default: {
|
||||
free (resource);
|
||||
|
||||
Reference in New Issue
Block a user