strace: Qstrace controls whether tracing is on
[akaros.git] / kern / arch / x86 / setjmp.h
index 8326034..64397e0 100644 (file)
@@ -1,7 +1,6 @@
 // Arch specific struct definitions for setjmp/longjmp.
 
-#ifndef ROS_ARCH_SETJMP_H
-#define ROS_ARCH_SETJMP_H
+#pragma once
 
 #include <common.h>
 
@@ -17,6 +16,16 @@ static inline void __ros_clobber_callee_regs(void)
        asm volatile ("" : : : "rbx", "r12", "r13", "r14", "r15");
 }
 
+static inline uintptr_t jmpbuf_get_pc(struct jmpbuf *jb)
+{
+       return jb->retaddr;
+}
+
+static inline uintptr_t jmpbuf_get_fp(struct jmpbuf *jb)
+{
+       return jb->rbp;
+}
+
 #else
 
 struct jmpbuf {
@@ -29,6 +38,15 @@ static inline __ros_clobber_callee_regs(void)
 {
        asm volatile ("" : : : "ebx", "esi", "edi");
 }
-#endif
 
-#endif /* !ROS_ARCH_SETJMP_H */
+static inline uintptr_t jmpbuf_get_pc(struct jmpbuf *jb)
+{
+       return jb->retaddr;
+}
+
+static inline uintptr_t jmpbuf_get_fp(struct jmpbuf *jb)
+{
+       return jb->ebp;
+}
+
+#endif