add mem-map for x86_64
[lunaix-os.git] / lunaix-os / arch / x86 / includes / sys / abi64.h
1 #ifndef __LUNAIX_ARCH_ABI64_H
2 #define __LUNAIX_ARCH_ABI64_H
3
4 #include "sys/x86_isa.h"
5
6 #define stack_alignment 0xfffffffffffffff0UL
7
8 #ifndef __ASM__
9 #define store_retval(retval) current_thread->hstate->registers.rax = (retval)
10
11 #define store_retval_to(th, retval) (th)->hstate->registers.rax = (retval)
12
13 static inline void must_inline 
14 j_usr(ptr_t sp, ptr_t pc) 
15 {
16     asm volatile(
17                  "pushq %0\n"
18                  "pushq %1\n"
19                  "pushq %2\n"
20                  "pushq %3\n"
21                  "retfq" 
22                  ::
23                     "i"(UDATA_SEG),
24                     "r"(sp),
25                     "i"(UCODE_SEG),
26                     "r"(pc)
27                  : 
28                  "memory");
29 }
30
31 static inline ptr_t must_inline
32 abi_get_callframe()
33 {
34     ptr_t val;
35     asm("movq %%rbp, %0" : "=r"(val)::);
36     return val;
37 }
38
39 #endif
40 #endif /* __LUNAIX_ARCH_ABI64_H */