aboutsummaryrefslogtreecommitdiff
path: root/alloc.inc
diff options
context:
space:
mode:
Diffstat (limited to 'alloc.inc')
-rw-r--r--alloc.inc25
1 files changed, 25 insertions, 0 deletions
diff --git a/alloc.inc b/alloc.inc
new file mode 100644
index 0000000..da27e1e
--- /dev/null
+++ b/alloc.inc
@@ -0,0 +1,25 @@
+%ifndef ALLOC_INC
+%define ALLOC_INC
+%ifndef SYS_INC
+%include "sys.inc"
+%endif
+
+%macro alloc 1
+ mov rax, SYS_MMAP
+ 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
+ syscall
+%endm
+
+%macro free 2
+ mov rax, SYS_MUNMAP
+ mov rdi, %1 ; Address to free
+ mov rsi, %2 ; Size allocated
+ syscall
+%endm
+
+%endif