From 972b9cd3934a78937f80550d0ebfceea4d010956 Mon Sep 17 00:00:00 2001 From: Takuya ASADA Date: Wed, 30 Sep 2009 06:22:01 +0000 Subject: curproc, curprocpaddr moved into cpu_info OK miod@ --- sys/arch/mips64/include/asm.h | 14 ++++++++++- sys/arch/mips64/include/cpu.h | 3 ++- sys/arch/mips64/mips64/context.S | 14 +++++------ sys/arch/mips64/mips64/exception.S | 40 ++++++++++++++++++------------- sys/arch/mips64/mips64/lcore_access.S | 44 +++++++++++++++++++++++------------ sys/arch/mips64/mips64/lcore_ddb.S | 26 ++++++++++++++------- sys/arch/mips64/mips64/lcore_float.S | 13 ++++++----- sys/arch/mips64/mips64/tlbhandler.S | 14 +++++++---- 8 files changed, 109 insertions(+), 59 deletions(-) (limited to 'sys/arch/mips64') diff --git a/sys/arch/mips64/include/asm.h b/sys/arch/mips64/include/asm.h index e87474dfc1b..778a0635fe2 100644 --- a/sys/arch/mips64/include/asm.h +++ b/sys/arch/mips64/include/asm.h @@ -1,4 +1,4 @@ -/* $OpenBSD: asm.h,v 1.7 2004/10/20 12:49:15 pefo Exp $ */ +/* $OpenBSD: asm.h,v 1.8 2009/09/30 06:22:00 syuu Exp $ */ /* * Copyright (c) 2001-2002 Opsycon AB (www.opsycon.se / www.opsycon.com) @@ -293,4 +293,16 @@ x: ; \ .asciiz str; \ .align 3 +#ifdef MULTIPROCESSOR +#define GET_CPU_INFO(ci, tmp) \ + HW_CPU_NUMBER(tmp); \ + PTR_SLL tmp, tmp, LOGREGSZ; \ + LA ci, cpu_info; \ + PTR_ADDU ci, ci, tmp; \ + PTR_L ci, 0(ci) +#else /* MULTIPROCESSOR */ +#define GET_CPU_INFO(ci, tmp) \ + LA ci, cpu_info_primary +#endif /* MULTIPROCESSOR */ + #endif /* !_MIPS_ASM_H */ diff --git a/sys/arch/mips64/include/cpu.h b/sys/arch/mips64/include/cpu.h index cf133a71d95..a74da48580f 100644 --- a/sys/arch/mips64/include/cpu.h +++ b/sys/arch/mips64/include/cpu.h @@ -1,4 +1,4 @@ -/* $OpenBSD: cpu.h,v 1.36 2009/09/15 04:54:31 syuu Exp $ */ +/* $OpenBSD: cpu.h,v 1.37 2009/09/30 06:22:00 syuu Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -367,6 +367,7 @@ struct cpu_info { struct cpu_info *ci_self; /* pointer to this structure */ struct cpu_info *ci_next; /* next cpu */ struct proc *ci_curproc; + struct user *ci_curprocpaddr; struct schedstate_percpu ci_schedstate; diff --git a/sys/arch/mips64/mips64/context.S b/sys/arch/mips64/mips64/context.S index a57db3165d9..088e96e31cc 100644 --- a/sys/arch/mips64/mips64/context.S +++ b/sys/arch/mips64/mips64/context.S @@ -1,4 +1,4 @@ -/* $OpenBSD: context.S,v 1.23 2009/08/06 21:11:39 miod Exp $ */ +/* $OpenBSD: context.S,v 1.24 2009/09/30 06:22:00 syuu Exp $ */ /* * Copyright (c) 2002-2003 Opsycon AB (www.opsycon.se / www.opsycon.com) @@ -39,8 +39,6 @@ #include "assym.h" -#define curproc (cpu_info_primary + CI_CURPROC) - .set mips3 .set noreorder # Noreorder is default style! @@ -105,7 +103,8 @@ END(cpu_idle_cycle) * cpu_switchto(struct proc *oldproc, struct proc *newproc) */ NON_LEAF(cpu_switchto, FRAMESZ(CF_SZ), ra) - PTR_L t3, curprocpaddr + GET_CPU_INFO(t1, t3) + PTR_L t3, CI_CURPROCPADDR(t1) REG_S sp, PCB_CONTEXT+8*REGSZ(t3) # save old sp PTR_SUBU sp, sp, FRAMESZ(CF_SZ) @@ -148,9 +147,10 @@ NON_LEAF(cpu_switchto, FRAMESZ(CF_SZ), ra) move a0, s0 PTR_L t3, P_ADDR(s0) # get uarea pointer. - PTR_S s0, curproc # set curproc - PTR_S t3, curprocpaddr - + GET_CPU_INFO(t1, t0) + PTR_S s0, CI_CURPROC(t1) # set curproc + PTR_S t3, CI_CURPROCPADDR(t1) + li t1, SONPROC sb t1, P_STAT(s0) # set to onproc. diff --git a/sys/arch/mips64/mips64/exception.S b/sys/arch/mips64/mips64/exception.S index 6f3c8dccfec..4c6af38e399 100644 --- a/sys/arch/mips64/mips64/exception.S +++ b/sys/arch/mips64/mips64/exception.S @@ -1,4 +1,4 @@ -/* $OpenBSD: exception.S,v 1.21 2009/09/15 04:54:31 syuu Exp $ */ +/* $OpenBSD: exception.S,v 1.22 2009/09/30 06:22:00 syuu Exp $ */ /* * Copyright (c) 2002-2003 Opsycon AB (www.opsycon.se / www.opsycon.com) @@ -47,8 +47,6 @@ #include "assym.h" -#define curproc (cpu_info_primary + CI_CURPROC) - .set mips3 .data @@ -221,7 +219,8 @@ END(k_intr) NNON_LEAF(u_intr, FRAMESZ(CF_SZ), ra) .set noat .mask 0x80000000, (CF_RA_OFFS - FRAMESZ(CF_SZ)) - PTR_L k0, curprocpaddr + GET_CPU_INFO(k1, k0) + PTR_L k0, CI_CURPROCPADDR(k1) SAVE_CPU(k0, 0) #if 0 cfc0 v1, COP_0_ICR @@ -248,12 +247,13 @@ NNON_LEAF(u_intr, FRAMESZ(CF_SZ), ra) ITLBNOPFIX 0: - PTR_L t0, curproc + GET_CPU_INFO(t1, t0) + PTR_L t0, CI_CURPROC(t1) lw v0, P_ASTPENDING(t0) # any pending AST? beq v0, zero, 4f nop - PTR_L t0, P_ADDR(t0) # curprocpaddr + PTR_L t0, CI_CURPROCPADDR(t1) # curprocpaddr SAVE_CPU_SREG(t0, 0) #ifdef PERFCNTRS @@ -287,7 +287,8 @@ NNON_LEAF(u_intr, FRAMESZ(CF_SZ), ra) lw t0, cpu_is_rm7k beqz t0, 1f # not an RM7K. Don't do perf setup. - PTR_L t1, curproc # set up rm7k. + GET_CPU_INFO(t1, t0) + PTR_L t0, CI_CURPROC(t1) # set up rm7k. ld v0, P_WATCH_1(t1) dmtc0 v0, COP_0_WATCH_1 ld v0, P_WATCH_2(t1) @@ -303,7 +304,8 @@ NNON_LEAF(u_intr, FRAMESZ(CF_SZ), ra) nop;nop;nop;nop 1: #endif - PTR_L t0, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t0, CI_CURPROCPADDR(t1) RESTORE_CPU_SREG(t0, 0) b 0b @@ -325,7 +327,8 @@ NNON_LEAF(u_intr, FRAMESZ(CF_SZ), ra) mtc0 t0, COP_0_STATUS_REG # must set exception level bit. ITLBNOPFIX - PTR_L k0, curprocpaddr + GET_CPU_INFO(k1, k0) + PTR_L k0, CI_CURPROCPADDR(k1) RESTORE_REG(a3, CPL, k0, 0) sw a3, cpl .set noat @@ -396,7 +399,8 @@ NNON_LEAF(u_general, FRAMESZ(CF_SZ), ra) .set noat .mask 0x80000000, (CF_RA_OFFS - FRAMESZ(CF_SZ)) - PTR_L k0, curprocpaddr + GET_CPU_INFO(k1, k0) + PTR_L k0, CI_CURPROCPADDR(k1) SAVE_CPU(k0, 0) #if 0 cfc0 v1, COP_0_ICR @@ -415,7 +419,7 @@ NNON_LEAF(u_general, FRAMESZ(CF_SZ), ra) beqz t0, 1f # not an RM7K. Don't do perf save. mfc0 v0, COP_0_PC_CTRL - PTR_L t0, curproc + PTR_L t0, CI_CURPROC(k1) sw v0, P_PC_CTRL(t0) dmfc0 v0, COP_0_WATCH_1 dmfc0 v1, COP_0_WATCH_2 @@ -434,7 +438,8 @@ NNON_LEAF(u_general, FRAMESZ(CF_SZ), ra) PTR_S a3, CF_RA_OFFS(sp) # for debugging 0: - PTR_L t0, curproc + GET_CPU_INFO(t1, t0) + PTR_L t0, CI_CURPROC(t1) lw v0, P_ASTPENDING(t0) # any pending AST? beq v0, zero, 4f nop @@ -445,7 +450,8 @@ NNON_LEAF(u_general, FRAMESZ(CF_SZ), ra) jal ast nop - PTR_L t0, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t0, CI_CURPROCPADDR(t1) RESTORE_CPU_SREG(t0, 0) b 0b @@ -456,7 +462,7 @@ NNON_LEAF(u_general, FRAMESZ(CF_SZ), ra) lw t0, cpu_is_rm7k beqz t0, 1f # not an RM7K. Don't do perf setup. - LOAD t0, curproc # set up rm7k. + LOAD t0, CI_CURPROC(k1) # set up rm7k. ld v0, P_WATCH_1(t0) dmtc0 v0, COP_0_WATCH_1 ld v0, P_WATCH_2(t0) @@ -482,7 +488,8 @@ NNON_LEAF(u_general, FRAMESZ(CF_SZ), ra) mtc0 t0, COP_0_STATUS_REG # must set exception level bit. ITLBNOPFIX - PTR_L k0, curprocpaddr + GET_CPU_INFO(k1, k0) + PTR_L k0, CI_CURPROCPADDR(k1) RESTORE_REG(a3, CPL, k0, 0) sw a3, cpl .set noat @@ -571,7 +578,8 @@ LEAF(proc_trampoline, 0) ITLBNOPFIX .set noat - PTR_L k0, curprocpaddr + GET_CPU_INFO(k1, k0) + PTR_L k0, CI_CURPROCPADDR(k1) RESTORE_CPU_SREG(k0, 0) RESTORE_REG(a0, PC, k0, 0) #if 0 diff --git a/sys/arch/mips64/mips64/lcore_access.S b/sys/arch/mips64/mips64/lcore_access.S index 88644bf3aab..15eea352aae 100644 --- a/sys/arch/mips64/mips64/lcore_access.S +++ b/sys/arch/mips64/mips64/lcore_access.S @@ -1,4 +1,4 @@ -/* $OpenBSD: lcore_access.S,v 1.17 2009/05/22 20:37:53 miod Exp $ */ +/* $OpenBSD: lcore_access.S,v 1.18 2009/09/30 06:22:00 syuu Exp $ */ /* * Copyright (c) 2001-2003 Opsycon AB (www.opsycon.se / www.opsycon.com) @@ -190,12 +190,14 @@ NON_LEAF(copyinstr, FRAMESZ(CF_SZ), ra) PTR_S ra, CF_RA_OFFS(sp) blt a0, zero, _copyerr # make sure address is in user space LI v0, KT_COPYERR - PTR_L t3, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t3, CI_CURPROCPADDR(t1) jal copystr sw v0, PCB_ONFAULT(t3) PTR_L ra, CF_RA_OFFS(sp) - PTR_L t3, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t3, CI_CURPROCPADDR(t1) sw zero, PCB_ONFAULT(t3) PTR_ADDU sp, sp, FRAMESZ(CF_SZ) j ra @@ -218,12 +220,14 @@ NON_LEAF(copyoutstr, FRAMESZ(CF_SZ), ra) PTR_S ra, CF_RA_OFFS(sp) blt a1, zero, _copyerr # make sure address is in user space LI v0, KT_COPYERR - PTR_L t3, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t3, CI_CURPROCPADDR(t1) jal copystr sw v0, PCB_ONFAULT(t3) PTR_L ra, CF_RA_OFFS(sp) - PTR_L t3, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t3, CI_CURPROCPADDR(t1) sw zero, PCB_ONFAULT(t3) PTR_ADDU sp, sp, FRAMESZ(CF_SZ) j ra @@ -243,12 +247,14 @@ NON_LEAF(copyin, FRAMESZ(CF_SZ), ra) PTR_S ra, CF_RA_OFFS(sp) blt a0, zero, _copyerr # make sure address is in user space li v0, KT_COPYERR - PTR_L t3, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t3, CI_CURPROCPADDR(t1) jal bcopy sw v0, PCB_ONFAULT(t3) PTR_L ra, CF_RA_OFFS(sp) - PTR_L t3, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t3, CI_CURPROCPADDR(t1) sw zero, PCB_ONFAULT(t3) PTR_ADDU sp, sp, FRAMESZ(CF_SZ) j ra @@ -268,12 +274,14 @@ NON_LEAF(copyout, FRAMESZ(CF_SZ), ra) PTR_S ra, CF_RA_OFFS(sp) blt a1, zero, _copyerr # make sure address is in user space li v0, KT_COPYERR - PTR_L t3, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t3, CI_CURPROCPADDR(t1) jal bcopy sw v0, PCB_ONFAULT(t3) PTR_L ra, CF_RA_OFFS(sp) - PTR_L t3, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t3, CI_CURPROCPADDR(t1) sw zero, PCB_ONFAULT(t3) PTR_ADDU sp, sp, FRAMESZ(CF_SZ) j ra @@ -282,7 +290,8 @@ END(copyout) _copyerr: PTR_L ra, CF_RA_OFFS(sp) - PTR_L t3, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t3, CI_CURPROCPADDR(t1) sw zero, PCB_ONFAULT(t3) PTR_ADDU sp, sp, FRAMESZ(CF_SZ) j ra @@ -295,7 +304,8 @@ NON_LEAF(kcopy, FRAMESZ(CF_SZ + REGSZ), ra) PTR_SUBU sp, sp, FRAMESZ(CF_SZ + REGSZ) .mask 0x80000000, (CF_RA_OFFS - FRAMESZ(CF_SZ + REGSZ)) PTR_S ra, CF_RA_OFFS + REGSZ(sp) - PTR_L t3, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t3, CI_CURPROCPADDR(t1) lw v1, PCB_ONFAULT(t3) li v0, KT_KCOPYERR PTR_S v1, CF_ARGSZ(sp) # save old pcb_onfault @@ -303,7 +313,8 @@ NON_LEAF(kcopy, FRAMESZ(CF_SZ + REGSZ), ra) sw v0, PCB_ONFAULT(t3) PTR_L v0, CF_ARGSZ(sp) - PTR_L t3, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t3, CI_CURPROCPADDR(t1) PTR_L ra, CF_RA_OFFS + REGSZ(sp) sw v0, PCB_ONFAULT(t3) PTR_ADDU sp, sp, FRAMESZ(CF_SZ + REGSZ) @@ -313,7 +324,8 @@ END(kcopy) _kcopyerr: PTR_L v0, CF_ARGSZ(sp) - PTR_L t3, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t3, CI_CURPROCPADDR(t1) PTR_L ra, CF_RA_OFFS + REGSZ(sp) sw v0, PCB_ONFAULT(t3) PTR_ADDU sp, sp, FRAMESZ(CF_SZ + REGSZ) @@ -327,7 +339,8 @@ _kcopyerr: */ LEAF(guarded_read_4, 0) - PTR_L t3, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t3, CI_CURPROCPADDR(t1) li v0, KT_GUARDERR lw v1, PCB_ONFAULT(t3) sw v0, PCB_ONFAULT(t3) @@ -341,7 +354,8 @@ LEAF(guarded_read_4, 0) END(guarded_read_4) LEAF(guarded_write_4, 0) - PTR_L t3, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t3, CI_CURPROCPADDR(t1) li v0, KT_GUARDERR lw v1, PCB_ONFAULT(t3) sw v0, PCB_ONFAULT(t3) diff --git a/sys/arch/mips64/mips64/lcore_ddb.S b/sys/arch/mips64/mips64/lcore_ddb.S index bf9306d5450..ee43279c83d 100644 --- a/sys/arch/mips64/mips64/lcore_ddb.S +++ b/sys/arch/mips64/mips64/lcore_ddb.S @@ -1,4 +1,4 @@ -/* $OpenBSD: lcore_ddb.S,v 1.9 2009/05/22 20:37:53 miod Exp $ */ +/* $OpenBSD: lcore_ddb.S,v 1.10 2009/09/30 06:22:00 syuu Exp $ */ /* * Copyright (c) 2001-2003 Opsycon AB (www.opsycon.se / www.opsycon.com) @@ -41,7 +41,8 @@ #ifdef __LP64__ LEAF(kdbpeekd, 0) - PTR_L t0, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t0, CI_CURPROCPADDR(t1) li v0, KT_DDBERR and v1, a0, 7 # unaligned ? bne v1, zero, 1f @@ -60,7 +61,8 @@ END(kdbpeekd) #endif LEAF(kdbpeek, 0) - PTR_L t0, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t0, CI_CURPROCPADDR(t1) li v0, KT_DDBERR and v1, a0, 3 # unaligned ? bne v1, zero, 1f @@ -78,7 +80,8 @@ LEAF(kdbpeek, 0) END(kdbpeek) LEAF(kdbpeekw, 0) - PTR_L t0, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t0, CI_CURPROCPADDR(t1) li v0, KT_DDBERR and v1, a0, 1 # unaligned ? bne v1, zero, 1f @@ -95,7 +98,8 @@ LEAF(kdbpeekw, 0) END(kdbpeekw) LEAF(kdbpeekb, 0) - PTR_L t0, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t0, CI_CURPROCPADDR(t1) li v0, KT_DDBERR sw v0, PCB_ONFAULT(t0) lb v0, 0(a0) @@ -110,7 +114,8 @@ kt_ddberr: #ifdef __LP64__ LEAF(kdbpoked, 0) - PTR_L t0, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t0, CI_CURPROCPADDR(t1) li v0, KT_DDBERR and v1, a0, 7 # unaligned ? bne v1, zero, 1f @@ -130,7 +135,8 @@ END(kdbpoked) LEAF(kdbpoke, 0) - PTR_L t0, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t0, CI_CURPROCPADDR(t1) li v0, KT_DDBERR and v1, a0, 3 # unaligned ? bne v1, zero, 1f @@ -148,7 +154,8 @@ LEAF(kdbpoke, 0) END(kdbpoke) LEAF(kdbpokew, 0) - PTR_L t0, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t0, CI_CURPROCPADDR(t1) li v0, KT_DDBERR and v1, a0, 1 # unaligned ? bne v1, zero, 1f @@ -164,7 +171,8 @@ LEAF(kdbpokew, 0) END(kdbpokew) LEAF(kdbpokeb, 0) - PTR_L t0, curprocpaddr + GET_CPU_INFO(t1, t0) + PTR_L t0, CI_CURPROCPADDR(t1) li v0, KT_DDBERR sw v0, PCB_ONFAULT(t0) sb a1, 0(a0) diff --git a/sys/arch/mips64/mips64/lcore_float.S b/sys/arch/mips64/mips64/lcore_float.S index e3545676b16..686661ab64d 100644 --- a/sys/arch/mips64/mips64/lcore_float.S +++ b/sys/arch/mips64/mips64/lcore_float.S @@ -1,4 +1,4 @@ -/* $OpenBSD: lcore_float.S,v 1.16 2009/05/22 20:37:53 miod Exp $ */ +/* $OpenBSD: lcore_float.S,v 1.17 2009/09/30 06:22:00 syuu Exp $ */ /* * Copyright (c) 2001-2003 Opsycon AB (www.opsycon.se / www.opsycon.com) @@ -36,8 +36,6 @@ #include "assym.h" -#define curproc (cpu_info_primary + CI_CURPROC) - .set noreorder # Noreorder is default style! .set mips3 @@ -451,7 +449,8 @@ NON_LEAF(MipsFPTrap, FRAMESZ(CF_SZ), ra) * The instruction is in the branch delay slot so the branch will have to * be emulated to get the resulting PC. */ - PTR_L a0, curprocpaddr # first arg is ptr to CPU regs + GET_CPU_INFO(t2, t3) + PTR_L a0, CI_CURPROCPADDR(t2) # first arg is ptr to CPU regs move a1, a2 # second arg is instruction PC move a2, t1 # third arg is the FP CSR jal MipsEmulateBranch # compute PC after branch @@ -471,7 +470,8 @@ NON_LEAF(MipsFPTrap, FRAMESZ(CF_SZ), ra) lw a0, 0(a2) # a0 = coproc instruction PTR_ADDU v0, a2, 4 # v0 = next pc 2: - PTR_L a3, curprocpaddr # first arg is ptr to CPU regs + GET_CPU_INFO(t2, t3) + PTR_L a3, CI_CURPROCPADDR(t2) # first arg is ptr to CPU regs PTR_S v0, PCB_REGS+(PC * REGSZ)(a3) # save new pc /* * Check to see if the instruction to be emulated is a floating-point @@ -485,7 +485,8 @@ NON_LEAF(MipsFPTrap, FRAMESZ(CF_SZ), ra) */ 3: cfc1 a2, FPC_CSR # code = FP exceptions - PTR_L a0, curproc # get current process + GET_CPU_INFO(t2, t3) + PTR_L a0, CI_CURPROC(t2) # get current process PTR_L a4, 3*REGSZ(sp) and v0, a2, FPC_EXCEPTION_INEXACT bnez v0, 4f diff --git a/sys/arch/mips64/mips64/tlbhandler.S b/sys/arch/mips64/mips64/tlbhandler.S index 087a2e0a974..022b73a55c1 100644 --- a/sys/arch/mips64/mips64/tlbhandler.S +++ b/sys/arch/mips64/mips64/tlbhandler.S @@ -1,4 +1,4 @@ -/* $OpenBSD: tlbhandler.S,v 1.19 2009/08/06 21:11:39 miod Exp $ */ +/* $OpenBSD: tlbhandler.S,v 1.20 2009/09/30 06:22:00 syuu Exp $ */ /* * Copyright (c) 1995-2004 Opsycon AB (www.opsycon.se / www.opsycon.com) @@ -84,7 +84,8 @@ tlb_miss_err_r5k: .globl tlb_miss .ent tlb_miss, 0 tlb_miss: - PTR_L k1, curprocpaddr + GET_CPU_INFO(k1, k0) + PTR_L k1, CI_CURPROCPADDR(k1) dmfc0 k0, COP_0_BAD_VADDR bltz k0, _k_miss # kernel address space PTR_SRL k0, k0, SEGSHIFT - LOGREGSZ @@ -141,8 +142,12 @@ xtlb_miss: PTR_SRL k0, k0, SEGSHIFT sltiu k1, k0, PMAP_SEGTABSIZE beqz k1, _inv_seg # wrong if outside pm_segtab + nop + GET_CPU_INFO(k1, k0) + PTR_L k1, CI_CURPROCPADDR(k1) + dmfc0 k0, COP_0_BAD_VADDR + PTR_SRL k0, k0, SEGSHIFT PTR_SLL k0, k0, LOGREGSZ - PTR_L k1, curprocpaddr PTR_L k1, PCB_SEGTAB(k1) PTR_ADDU k1, k1, k0 PTR_L k1, 0(k1) # get pointer to page table @@ -321,7 +326,8 @@ NLEAF(k_tlb_miss, 0) eret sys_stk_chk: - PTR_L k1, curprocpaddr + GET_CPU_INFO(k1, k0) + PTR_L k1, CI_CURPROCPADDR(k1) PTR_SUBU k0, sp, k1 # check to see if we have a sltiu k0, 2048 # valid kernel stack beqz k0, go_k_general # yes, handle. -- cgit v1.2.3