From: Yoichi Yuasa This patch had fixed LTT for MIPS. Signed-off-by: Yoichi Yuasa Signed-off-by: Andrew Morton --- 25-akpm/arch/mips/kernel/traps.c | 15 ++++++++------- 25-akpm/arch/mips/kernel/unaligned.c | 2 +- 25-akpm/arch/mips/mm/fault.c | 2 +- 25-akpm/include/asm-mips/mipsregs.h | 1 + 4 files changed, 11 insertions(+), 9 deletions(-) diff -puN arch/mips/kernel/traps.c~ltt-architecture-events-mips-fix arch/mips/kernel/traps.c --- 25/arch/mips/kernel/traps.c~ltt-architecture-events-mips-fix 2005-01-25 21:48:37.471734936 -0800 +++ 25-akpm/arch/mips/kernel/traps.c 2005-01-25 21:48:37.480733568 -0800 @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -226,7 +227,7 @@ void show_regs(struct pt_regs *regs) printk("Cause : %08x\n", cause); - cause = (cause & CAUSEF_EXCCODE) >> CAUSEB_EXCCODE; + cause = CAUSE_EXCCODE(cause); if (1 <= cause && cause <= 5) printk("BadVA : %0*lx\n", field, regs->cp0_badvaddr); @@ -502,7 +503,7 @@ asmlinkage void do_ov(struct pt_regs *re */ asmlinkage void do_fpe(struct pt_regs *regs, unsigned long fcr31) { - ltt_ev_trap_entry(CAUSE_EXCCODE(regs), CAUSE_EPC(regs)); + ltt_ev_trap_entry(CAUSE_EXCCODE(regs->cp0_cause), regs->cp0_epc); if (fcr31 & FPU_CSR_UNI_X) { int sig; @@ -642,7 +643,7 @@ asmlinkage void do_cpu(struct pt_regs *r die_if_kernel("do_cpu invoked from kernel context!", regs); - ltt_ev_trap_entry(CAUSE_EXCCODE(regs), CAUSE_EPC(regs)); + ltt_ev_trap_entry(CAUSE_EXCCODE(regs->cp0_cause), regs->cp0_epc); cpid = (regs->cp0_cause >> CAUSEB_CE) & 3; @@ -1091,8 +1092,8 @@ asmlinkage void trace_real_syscall_entry if (!user_mode(regs)) goto trace_syscall_end; - if (trace_get_config(&use_depth, &use_bounds, &seek_depth, - (void*)&lower_bound, (void*)&upper_bound) < 0) + if (ltt_get_trace_config(&use_depth, &use_bounds, &seek_depth, + (void*)&lower_bound, (void*)&upper_bound) < 0) goto trace_syscall_end; /* Heuristic that might work: @@ -1124,12 +1125,12 @@ asmlinkage void trace_real_syscall_entry } trace_syscall_end: - trace_event(LTT_EV_SYSCALL_ENTRY, &trace_syscall_event); + ltt_log_event(LTT_EV_SYSCALL_ENTRY, &trace_syscall_event); } asmlinkage void trace_real_syscall_exit(void) { - trace_event(LTT_EV_SYSCALL_EXIT, NULL); + ltt_log_event(LTT_EV_SYSCALL_EXIT, NULL); } #endif /* (CONFIG_LTT) */ diff -puN arch/mips/kernel/unaligned.c~ltt-architecture-events-mips-fix arch/mips/kernel/unaligned.c --- 25/arch/mips/kernel/unaligned.c~ltt-architecture-events-mips-fix 2005-01-25 21:48:37.473734632 -0800 +++ 25-akpm/arch/mips/kernel/unaligned.c 2005-01-25 21:48:37.481733416 -0800 @@ -498,7 +498,7 @@ asmlinkage void do_ade(struct pt_regs *r mm_segment_t seg; unsigned long pc; - ltt_ev_trap_entry(CAUSE_EXCCODE(regs), CAUSE_EPC(regs)); + ltt_ev_trap_entry(CAUSE_EXCCODE(regs->cp0_cause), regs->cp0_epc); /* * Address errors may be deliberately induced by the FPU emulator to diff -puN arch/mips/mm/fault.c~ltt-architecture-events-mips-fix arch/mips/mm/fault.c --- 25/arch/mips/mm/fault.c~ltt-architecture-events-mips-fix 2005-01-25 21:48:37.474734480 -0800 +++ 25-akpm/arch/mips/mm/fault.c 2005-01-25 21:48:37.481733416 -0800 @@ -61,7 +61,7 @@ asmlinkage void do_page_fault(struct pt_ if (unlikely(address >= VMALLOC_START)) goto vmalloc_fault; - ltt_ev_trap_entry(CAUSE_EXCCODE(regs), CAUSE_EPC(regs)); + ltt_ev_trap_entry(CAUSE_EXCCODE(regs->cp0_cause), regs->cp0_epc); /* * If we're in an interrupt or have no user diff -puN include/asm-mips/mipsregs.h~ltt-architecture-events-mips-fix include/asm-mips/mipsregs.h --- 25/include/asm-mips/mipsregs.h~ltt-architecture-events-mips-fix 2005-01-25 21:48:37.476734176 -0800 +++ 25-akpm/include/asm-mips/mipsregs.h 2005-01-25 21:48:37.482733264 -0800 @@ -369,6 +369,7 @@ */ #define CAUSEB_EXCCODE 2 #define CAUSEF_EXCCODE (_ULCAST_(31) << 2) +#define CAUSE_EXCCODE(cause) (((cause) & CAUSEF_EXCCODE) >> CAUSEB_EXCCODE) #define CAUSEB_IP 8 #define CAUSEF_IP (_ULCAST_(255) << 8) #define CAUSEB_IP0 8 _