diff options
Diffstat (limited to 'alloc.inc')
-rw-r--r-- | alloc.inc | 22 |
1 files changed, 18 insertions, 4 deletions
@@ -4,22 +4,36 @@ %include "sys.inc" %endif -%macro alloc 0-1 rax +_alloc: xor rdi, rdi ; Let Kernel give Address - mov rsi, %1 ; Size to allocate mov rdx, 3 ; PROT_READ | PROT_WRITE mov r10, 0x1002 ; MAP_PRIVATE | MAP_ANONYMOUS xor r8, r8 ; fd = -1, Not backed by a file xor r9, r9 ; offset = 0 mov rax, SYS_MMAP syscall + ret + +%macro alloc 0-1 rax + %if "%1" != "%rsi" + mov rsi, %1 ; Size to allocate + %endif + call _alloc %endm +_free: + mov rax, SYS_MUNMAP + syscall + ret + %macro free 1-2 rax + %if "%1" != "%rdi" mov rdi, %1 ; Address to free + %endif + %if "%1" != "%rsi" mov rsi, %2 ; Size allocated - mov rax, SYS_MUNMAP - syscall + %endif + call _free %endm %endif |