From owner-svn-src-all@FreeBSD.ORG Fri Jul 30 09:38:48 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 18C9A1065674; Fri, 30 Jul 2010 09:38:48 +0000 (UTC) (envelope-from jchandra@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F0E298FC16; Fri, 30 Jul 2010 09:38:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6U9cl35021237; Fri, 30 Jul 2010 09:38:47 GMT (envelope-from jchandra@svn.freebsd.org) Received: (from jchandra@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6U9clAN021233; Fri, 30 Jul 2010 09:38:47 GMT (envelope-from jchandra@svn.freebsd.org) Message-Id: <201007300938.o6U9clAN021233@svn.freebsd.org> From: "Jayachandran C." Date: Fri, 30 Jul 2010 09:38:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r210638 - head/sys/mips/mips X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jul 2010 09:38:48 -0000 Author: jchandra Date: Fri Jul 30 09:38:47 2010 New Revision: 210638 URL: http://svn.freebsd.org/changeset/base/210638 Log: MIPS n64 support - support kstack in XKSEG. - enable KX on entry from user-space, we need KX set to save to XKSEG addresses. - add MIPS_XKSEG_START to genassym.c - Add n64 case for swth.S Modified: head/sys/mips/mips/exception.S head/sys/mips/mips/genassym.c head/sys/mips/mips/swtch.S Modified: head/sys/mips/mips/exception.S ============================================================================== --- head/sys/mips/mips/exception.S Fri Jul 30 09:34:40 2010 (r210637) +++ head/sys/mips/mips/exception.S Fri Jul 30 09:38:47 2010 (r210638) @@ -426,6 +426,12 @@ NNON_LEAF(MipsUserGenException, CALLFRAM /* * Save all of the registers except for the kernel temporaries in u.u_pcb. */ + mfc0 k0, MIPS_COP_0_STATUS + HAZARD_DELAY +#ifdef __mips_n64 + ori k1, k0, MIPS_SR_KX + mtc0 k1, MIPS_COP_0_STATUS +#endif GET_CPU_PCPU(k1) PTR_L k1, PC_CURPCB(k1) SAVE_U_PCB_REG(AT, AST, k1) @@ -443,7 +449,7 @@ NNON_LEAF(MipsUserGenException, CALLFRAM SAVE_U_PCB_REG(t2, T2, k1) SAVE_U_PCB_REG(t3, T3, k1) SAVE_U_PCB_REG(ta0, TA0, k1) - mfc0 a0, MIPS_COP_0_STATUS # First arg is the status reg. + move a0, k0 # First arg is the status reg. SAVE_U_PCB_REG(ta1, TA1, k1) SAVE_U_PCB_REG(ta2, TA2, k1) SAVE_U_PCB_REG(ta3, TA3, k1) @@ -642,6 +648,12 @@ NNON_LEAF(MipsUserIntr, CALLFRAME_SIZ, r * Save the relevant user registers into the u.u_pcb struct. * We don't need to save s0 - s8 because the compiler does it for us. */ + mfc0 k0, MIPS_COP_0_STATUS + HAZARD_DELAY +#ifdef __mips_n64 + ori k1, k0, MIPS_SR_KX + mtc0 k1, MIPS_COP_0_STATUS +#endif GET_CPU_PCPU(k1) PTR_L k1, PC_CURPCB(k1) SAVE_U_PCB_REG(AT, AST, k1) @@ -680,7 +692,7 @@ NNON_LEAF(MipsUserIntr, CALLFRAME_SIZ, r mflo v0 # get lo/hi late to avoid stall mfhi v1 - mfc0 a0, MIPS_COP_0_STATUS + move a0, k0 mfc0 a1, MIPS_COP_0_CAUSE MFC0 a3, MIPS_COP_0_EXC_PC SAVE_U_PCB_REG(v0, MULLO, k1) Modified: head/sys/mips/mips/genassym.c ============================================================================== --- head/sys/mips/mips/genassym.c Fri Jul 30 09:34:40 2010 (r210637) +++ head/sys/mips/mips/genassym.c Fri Jul 30 09:38:47 2010 (r210638) @@ -103,3 +103,4 @@ ASSYM(MAXCOMLEN, MAXCOMLEN); ASSYM(MIPS_KSEG0_START, MIPS_KSEG0_START); ASSYM(MIPS_KSEG1_START, MIPS_KSEG1_START); ASSYM(MIPS_KSEG2_START, MIPS_KSEG2_START); +ASSYM(MIPS_XKSEG_START, MIPS_XKSEG_START); Modified: head/sys/mips/mips/swtch.S ============================================================================== --- head/sys/mips/mips/swtch.S Fri Jul 30 09:34:40 2010 (r210637) +++ head/sys/mips/mips/swtch.S Fri Jul 30 09:38:47 2010 (r210638) @@ -278,10 +278,12 @@ blocked_loop: PTR_L a2, TD_PCB(a1) PTR_S a2, PC_CURPCB(a3) PTR_L v0, TD_KSTACK(a1) -#if !defined(__mips_n64) +#if defined(__mips_n64) + PTR_LI s0, MIPS_XKSEG_START +#else PTR_LI s0, MIPS_KSEG2_START # If Uarea addr is below kseg2, - bltu v0, s0, sw2 # no need to insert in TLB. #endif + bltu v0, s0, sw2 # no need to insert in TLB. lw a1, TD_UPTE + 0(s7) # a1 = u. pte #0 lw a2, TD_UPTE + 4(s7) # a2 = u. pte #1 /*