#ifndef _SPARC64_TTABLE_H
#define _SPARC64_TTABLE_H
-#include <linux/config.h>
#include <asm/utrap.h>
#ifdef __ASSEMBLY__
#define KPROBES_TRAP(lvl) TRAP_ARG(bad_trap, lvl)
#endif
-#define SUN4V_ITSB_MISS \
- mov SCRATCHPAD_CPUID, %g1; \
- ldxa [%g1] ASI_SCRATCHPAD, %g2; \
- ldxa [%g1 + %g1] ASI_SCRATCHPAD, %g1;\
- sethi %hi(trap_block), %g5; \
- sllx %g2, TRAP_BLOCK_SZ_SHIFT, %g2; \
- or %g5, %lo(trap_block), %g5; \
- ba,pt %xcc, sun4v_itsb_miss; \
- add %g5, %g2, %g5;
-
-#define SUN4V_DTSB_MISS \
- mov SCRATCHPAD_CPUID, %g1; \
- ldxa [%g1] ASI_SCRATCHPAD, %g2; \
- ldxa [%g1 + %g1] ASI_SCRATCHPAD, %g1;\
- sethi %hi(trap_block), %g5; \
- sllx %g2, TRAP_BLOCK_SZ_SHIFT, %g2; \
- or %g5, %lo(trap_block), %g5; \
- ba,pt %xcc, sun4v_dtsb_miss; \
- add %g5, %g2, %g5;
+#define SUN4V_ITSB_MISS \
+ ldxa [%g0] ASI_SCRATCHPAD, %g2; \
+ ldx [%g2 + HV_FAULT_I_ADDR_OFFSET], %g4; \
+ ldx [%g2 + HV_FAULT_I_CTX_OFFSET], %g5; \
+ srlx %g4, 22, %g6; \
+ ba,pt %xcc, sun4v_itsb_miss; \
+ nop; \
+ nop; \
+ nop;
+
+#define SUN4V_DTSB_MISS \
+ ldxa [%g0] ASI_SCRATCHPAD, %g2; \
+ ldx [%g2 + HV_FAULT_D_ADDR_OFFSET], %g4; \
+ ldx [%g2 + HV_FAULT_D_CTX_OFFSET], %g5; \
+ srlx %g4, 22, %g6; \
+ ba,pt %xcc, sun4v_dtsb_miss; \
+ nop; \
+ nop; \
+ nop;
/* Before touching these macros, you owe it to yourself to go and
* see how arch/sparc64/kernel/winfixup.S works... -DaveM