git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into isa/arm64
[lunaix-os.git]
/
lunaix-os
/
arch
/
aarch64
/
includes
/
asm
/
abi.h
diff --git
a/lunaix-os/arch/aarch64/includes/asm/abi.h
b/lunaix-os/arch/aarch64/includes/asm/abi.h
index c5dc081b4973a9633c218a00a4d6c351e1d7c591..cc18bba28d47d3cef59165ba4d8e719063680d7d 100644
(file)
--- a/
lunaix-os/arch/aarch64/includes/asm/abi.h
+++ b/
lunaix-os/arch/aarch64/includes/asm/abi.h
@@
-4,7
+4,12
@@
#include <lunaix/types.h>
#ifndef __ASM__
#include <lunaix/types.h>
#ifndef __ASM__
-#define align_stack(ptr) ((ptr) & stack_alignment)
+
+#define align_stack(ptr) ((ptr) & ~15)
+
+#define store_retval(retval) current_thread->hstate->registers.x[0] = (retval)
+#define store_retval_to(th, retval) (th)->hstate->registers.x[0] = (retval)
+
static inline void must_inline noret
switch_context() {
static inline void must_inline noret
switch_context() {
@@
-29,6
+34,20
@@
abi_get_retaddrat(ptr_t fp)
return ((ptr_t*)fp)[1];
}
return ((ptr_t*)fp)[1];
}
+static inline ptr_t must_inline
+abi_get_callframe()
+{
+ ptr_t val;
+ asm volatile("mov %0, fp" : "=r"(val));
+ return val;
+}
+
+static inline void must_inline
+j_usr(ptr_t sp, ptr_t pc)
+{
+ // TODO
+}
+
#endif
#endif /* __LUNAIX_AA64_ABI_H */
#endif
#endif /* __LUNAIX_AA64_ABI_H */