diff options
author | Andrew Waterman <waterman@s144.Millennium.Berkeley.EDU> | 2010-10-15 17:51:37 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@s144.Millennium.Berkeley.EDU> | 2010-10-15 17:51:37 -0700 |
commit | b4fd490d689415205cf315c02f673b9386ece337 (patch) | |
tree | 73f93d81b6241b1d1204d7add68af065f9638ea9 /pk/pk.h | |
parent | 2b7fd5fa6ac24f3d6d6cb8f0d6c1c32b85c39f02 (diff) | |
download | pk-b4fd490d689415205cf315c02f673b9386ece337.zip pk-b4fd490d689415205cf315c02f673b9386ece337.tar.gz pk-b4fd490d689415205cf315c02f673b9386ece337.tar.bz2 |
[pk, sim] added FPU emulation support to proxy kernel
Diffstat (limited to 'pk/pk.h')
-rw-r--r-- | pk/pk.h | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -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 |