Preserve syscall return value in RAX
All checks were successful
Build documentation / build-and-deploy (push) Successful in 49s

This commit is contained in:
2026-01-08 23:06:32 +01:00
parent 0555ddd041
commit 79768d94e6
4 changed files with 24 additions and 7 deletions

View File

@@ -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);
}

View File

@@ -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

View File

@@ -32,7 +32,7 @@ amd64_syscall_entry:
movq %rbp, %rsp
pop_regs
pop_regs_skip_rax
addq $56, %rsp
movq %gs:0, %rsp

View File

@@ -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);