ref: d0e4fdbfed4d69c60e5d431accbcb6e08e014344
parent: fdbd75fad30016627aa740bfeaa8592d0ec80d44
author: Ori Bernstein <ori@eigenstate.org>
date: Fri May 27 14:25:09 EDT 2016
Add missing file.
--- /dev/null
+++ b/lib/thread/exit+openbsd-x64.s
@@ -1,0 +1,23 @@
+/*
+const thread.exit : (stacksz : std.size -> void)
+NOTE: must be called from the bottom of the stack, since
+we assume that %rbp is in the top 4k of the stack.
+*/
+.globl thread$exit
+thread$exit:
+ /* find top of stack */
+ movq %rbp,%rdi /* addr */
+ andq $~0xfff,%rdi /* align it */
+ addq $0x1000,%rdi
+
+ /* munmap(base, size) */
+ movq $73,%rax /* munmap */
+ movq -8(%rdi),%rsi /* size */
+ subq %rsi,%rdi /* move to base ptr */
+ syscall
+
+ /* __threxit(0) */
+ movq $302,%rax /* exit */
+ xorq %rdi,%rdi /* 0 */
+ syscall
+