Code-base clean-up and refactoring (#47)
[lunaix-os.git] / lunaix-os / arch / x86 / includes / asm / abi.h
1 #ifndef __LUNAIX_I386ABI_H
2 #define __LUNAIX_I386ABI_H
3
4 #ifdef CONFIG_ARCH_X86_64
5 #   include "variants/abi64.h"
6 #else
7 #   include "variants/abi32.h"
8 #endif
9
10 #ifndef __ASM__
11 #define align_stack(ptr) ((ptr) & stack_alignment)
12
13 static inline void must_inline noret
14 switch_context() {
15     asm volatile("jmp do_switch\n");
16     unreachable;
17 }
18
19
20 static inline ptr_t
21 abi_get_retaddr()
22 {
23     return *((ptr_t*)abi_get_callframe() + 1);
24 }
25
26 static inline ptr_t
27 abi_get_retaddrat(ptr_t fp)
28 {
29     return *((ptr_t*)fp + 1);
30 }
31
32 #endif
33 #endif /* __LUNAIX_ABI_H */