aboutsummaryrefslogtreecommitdiff
path: root/pk/pk.h
diff options
context:
space:
mode:
Diffstat (limited to 'pk/pk.h')
-rw-r--r--pk/pk.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/pk/pk.h b/pk/pk.h
index 501010e..c98e2f9 100644
--- a/pk/pk.h
+++ b/pk/pk.h
@@ -9,6 +9,7 @@ typedef struct
long badvaddr;
long cause;
long cr29;
+ long insn;
} trapframe_t;
#define USER_MEM_SIZE 0x70000000
@@ -22,6 +23,9 @@ typedef struct
extern "C" {
#endif
+extern int have_fp;
+int emulate_fp(trapframe_t*);
+
void printk(const char* s, ...);
void init_tf(trapframe_t*, long pc, long sp);
void pop_tf(trapframe_t*);
@@ -30,10 +34,18 @@ void dump_tf(trapframe_t*);
void unhandled_trap(trapframe_t*);
void handle_syscall(trapframe_t*);
void handle_breakpoint(trapframe_t*);
+void handle_misaligned_ldst(trapframe_t*);
+void handle_fault_load(trapframe_t*);
+void handle_fault_store(trapframe_t*);
void boot();
void sys_exit(int code) __attribute__((noreturn));
+static inline void advance_pc(trapframe_t* tf)
+{
+ tf->epc += 4;
+}
+
#ifdef __cplusplus
}
#endif