From owner-svn-src-head@FreeBSD.ORG Thu Apr 25 17:23:55 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 8995A19F; Thu, 25 Apr 2013 17:23:55 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 6AE1D1009; Thu, 25 Apr 2013 17:23:55 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r3PHNs3I056103; Thu, 25 Apr 2013 17:23:54 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r3PHNsV2056100; Thu, 25 Apr 2013 17:23:54 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <201304251723.r3PHNsV2056100@svn.freebsd.org> From: Warner Losh Date: Thu, 25 Apr 2013 17:23:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r249901 - in head/sys/mips: include mips X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 25 Apr 2013 17:23:55 -0000 Author: imp Date: Thu Apr 25 17:23:54 2013 New Revision: 249901 URL: http://svnweb.freebsd.org/changeset/base/249901 Log: Use the offsets from pcb.h rather than regnum.h to store the registers in the pcb. setjmp/longjmp in the kernel also used these values, so continue to use them although their use isn't technically the pcb register array (matching is all that's important for setjmp/longjmp in the kernel). Finally, eliminate the old register names from regnum.h. This is a lexical change only. The non-debug .o files have the same md5. Modified: head/sys/mips/include/regnum.h head/sys/mips/mips/support.S head/sys/mips/mips/swtch.S Modified: head/sys/mips/include/regnum.h ============================================================================== --- head/sys/mips/include/regnum.h Thu Apr 25 17:06:07 2013 (r249900) +++ head/sys/mips/include/regnum.h Thu Apr 25 17:23:54 2013 (r249901) @@ -43,24 +43,6 @@ #define _MACHINE_REGNUM_H_ /* - * This must match the numbers in pcb.h and is used by swtch.S - */ -#define PREG_S0 0 -#define PREG_S1 1 -#define PREG_S2 2 -#define PREG_S3 3 -#define PREG_S4 4 -#define PREG_S5 5 -#define PREG_S6 6 -#define PREG_S7 7 -#define PREG_SP 8 -#define PREG_S8 9 -#define PREG_RA 10 -#define PREG_SR 11 -#define PREG_GP 12 -#define PREG_PC 13 - -/* * Location of the saved registers relative to ZERO. * This must match struct trapframe defined in frame.h exactly. * This must also match regdef.h. Modified: head/sys/mips/mips/support.S ============================================================================== --- head/sys/mips/mips/support.S Thu Apr 25 17:06:07 2013 (r249900) +++ head/sys/mips/mips/support.S Thu Apr 25 17:23:54 2013 (r249901) @@ -92,6 +92,7 @@ #include #include #include +#include #include "assym.s" @@ -1079,35 +1080,35 @@ END(breakpoint) LEAF(setjmp) mfc0 v0, MIPS_COP_0_STATUS # Later the "real" spl value! - REG_S s0, (SZREG * PREG_S0)(a0) - REG_S s1, (SZREG * PREG_S1)(a0) - REG_S s2, (SZREG * PREG_S2)(a0) - REG_S s3, (SZREG * PREG_S3)(a0) - REG_S s4, (SZREG * PREG_S4)(a0) - REG_S s5, (SZREG * PREG_S5)(a0) - REG_S s6, (SZREG * PREG_S6)(a0) - REG_S s7, (SZREG * PREG_S7)(a0) - REG_S s8, (SZREG * PREG_S8)(a0) - REG_S sp, (SZREG * PREG_SP)(a0) - REG_S ra, (SZREG * PREG_RA)(a0) - REG_S v0, (SZREG * PREG_SR)(a0) + REG_S s0, (SZREG * PCB_REG_S0)(a0) + REG_S s1, (SZREG * PCB_REG_S1)(a0) + REG_S s2, (SZREG * PCB_REG_S2)(a0) + REG_S s3, (SZREG * PCB_REG_S3)(a0) + REG_S s4, (SZREG * PCB_REG_S4)(a0) + REG_S s5, (SZREG * PCB_REG_S5)(a0) + REG_S s6, (SZREG * PCB_REG_S6)(a0) + REG_S s7, (SZREG * PCB_REG_S7)(a0) + REG_S s8, (SZREG * PCB_REG_S8)(a0) + REG_S sp, (SZREG * PCB_REG_SP)(a0) + REG_S ra, (SZREG * PCB_REG_RA)(a0) + REG_S v0, (SZREG * PCB_REG_SR)(a0) jr ra li v0, 0 # setjmp return END(setjmp) LEAF(longjmp) - REG_L v0, (SZREG * PREG_SR)(a0) - REG_L ra, (SZREG * PREG_RA)(a0) - REG_L s0, (SZREG * PREG_S0)(a0) - REG_L s1, (SZREG * PREG_S1)(a0) - REG_L s2, (SZREG * PREG_S2)(a0) - REG_L s3, (SZREG * PREG_S3)(a0) - REG_L s4, (SZREG * PREG_S4)(a0) - REG_L s5, (SZREG * PREG_S5)(a0) - REG_L s6, (SZREG * PREG_S6)(a0) - REG_L s7, (SZREG * PREG_S7)(a0) - REG_L s8, (SZREG * PREG_S8)(a0) - REG_L sp, (SZREG * PREG_SP)(a0) + REG_L v0, (SZREG * PCB_REG_SR)(a0) + REG_L ra, (SZREG * PCB_REG_RA)(a0) + REG_L s0, (SZREG * PCB_REG_S0)(a0) + REG_L s1, (SZREG * PCB_REG_S1)(a0) + REG_L s2, (SZREG * PCB_REG_S2)(a0) + REG_L s3, (SZREG * PCB_REG_S3)(a0) + REG_L s4, (SZREG * PCB_REG_S4)(a0) + REG_L s5, (SZREG * PCB_REG_S5)(a0) + REG_L s6, (SZREG * PCB_REG_S6)(a0) + REG_L s7, (SZREG * PCB_REG_S7)(a0) + REG_L s8, (SZREG * PCB_REG_S8)(a0) + REG_L sp, (SZREG * PCB_REG_SP)(a0) mtc0 v0, MIPS_COP_0_STATUS # Later the "real" spl value! ITLBNOPFIX jr ra Modified: head/sys/mips/mips/swtch.S ============================================================================== --- head/sys/mips/mips/swtch.S Thu Apr 25 17:06:07 2013 (r249900) +++ head/sys/mips/mips/swtch.S Thu Apr 25 17:23:54 2013 (r249901) @@ -62,6 +62,7 @@ #include #include #include +#include #include "assym.s" @@ -173,26 +174,26 @@ END(fork_trampoline) * savectx(struct pcb *pcbp); */ LEAF(savectx) - SAVE_U_PCB_CONTEXT(s0, PREG_S0, a0) - SAVE_U_PCB_CONTEXT(s1, PREG_S1, a0) - SAVE_U_PCB_CONTEXT(s2, PREG_S2, a0) - SAVE_U_PCB_CONTEXT(s3, PREG_S3, a0) + SAVE_U_PCB_CONTEXT(s0, PCB_REG_S0, a0) + SAVE_U_PCB_CONTEXT(s1, PCB_REG_S1, a0) + SAVE_U_PCB_CONTEXT(s2, PCB_REG_S2, a0) + SAVE_U_PCB_CONTEXT(s3, PCB_REG_S3, a0) mfc0 v0, MIPS_COP_0_STATUS - SAVE_U_PCB_CONTEXT(s4, PREG_S4, a0) - SAVE_U_PCB_CONTEXT(s5, PREG_S5, a0) - SAVE_U_PCB_CONTEXT(s6, PREG_S6, a0) - SAVE_U_PCB_CONTEXT(s7, PREG_S7, a0) - SAVE_U_PCB_CONTEXT(sp, PREG_SP, a0) - SAVE_U_PCB_CONTEXT(s8, PREG_S8, a0) - SAVE_U_PCB_CONTEXT(ra, PREG_RA, a0) - SAVE_U_PCB_CONTEXT(v0, PREG_SR, a0) - SAVE_U_PCB_CONTEXT(gp, PREG_GP, a0) + SAVE_U_PCB_CONTEXT(s4, PCB_REG_S4, a0) + SAVE_U_PCB_CONTEXT(s5, PCB_REG_S5, a0) + SAVE_U_PCB_CONTEXT(s6, PCB_REG_S6, a0) + SAVE_U_PCB_CONTEXT(s7, PCB_REG_S7, a0) + SAVE_U_PCB_CONTEXT(sp, PCB_REG_SP, a0) + SAVE_U_PCB_CONTEXT(s8, PCB_REG_S8, a0) + SAVE_U_PCB_CONTEXT(ra, PCB_REG_RA, a0) + SAVE_U_PCB_CONTEXT(v0, PCB_REG_SR, a0) + SAVE_U_PCB_CONTEXT(gp, PCB_REG_GP, a0) move v0, ra /* save 'ra' before we trash it */ jal 1f nop 1: - SAVE_U_PCB_CONTEXT(ra, PREG_PC, a0) + SAVE_U_PCB_CONTEXT(ra, PCB_REG_PC, a0) move ra, v0 /* restore 'ra' before returning */ j ra @@ -229,26 +230,26 @@ NON_LEAF(cpu_switch, CALLFRAME_SIZ, ra) beqz a0, mips_sw1 move a3, a0 PTR_L a0, TD_PCB(a0) # load PCB addr of curproc - SAVE_U_PCB_CONTEXT(sp, PREG_SP, a0) # save old sp + SAVE_U_PCB_CONTEXT(sp, PCB_REG_SP, a0) # save old sp PTR_SUBU sp, sp, CALLFRAME_SIZ REG_S ra, CALLFRAME_RA(sp) .mask 0x80000000, (CALLFRAME_RA - CALLFRAME_SIZ) - SAVE_U_PCB_CONTEXT(s0, PREG_S0, a0) # do a 'savectx()' - SAVE_U_PCB_CONTEXT(s1, PREG_S1, a0) - SAVE_U_PCB_CONTEXT(s2, PREG_S2, a0) - SAVE_U_PCB_CONTEXT(s3, PREG_S3, a0) - SAVE_U_PCB_CONTEXT(s4, PREG_S4, a0) - SAVE_U_PCB_CONTEXT(s5, PREG_S5, a0) - SAVE_U_PCB_CONTEXT(s6, PREG_S6, a0) - SAVE_U_PCB_CONTEXT(s7, PREG_S7, a0) - SAVE_U_PCB_CONTEXT(s8, PREG_S8, a0) - SAVE_U_PCB_CONTEXT(ra, PREG_RA, a0) # save return address - SAVE_U_PCB_CONTEXT(t0, PREG_SR, a0) # save status register - SAVE_U_PCB_CONTEXT(gp, PREG_GP, a0) + SAVE_U_PCB_CONTEXT(s0, PCB_REG_S0, a0) # do a 'savectx()' + SAVE_U_PCB_CONTEXT(s1, PCB_REG_S1, a0) + SAVE_U_PCB_CONTEXT(s2, PCB_REG_S2, a0) + SAVE_U_PCB_CONTEXT(s3, PCB_REG_S3, a0) + SAVE_U_PCB_CONTEXT(s4, PCB_REG_S4, a0) + SAVE_U_PCB_CONTEXT(s5, PCB_REG_S5, a0) + SAVE_U_PCB_CONTEXT(s6, PCB_REG_S6, a0) + SAVE_U_PCB_CONTEXT(s7, PCB_REG_S7, a0) + SAVE_U_PCB_CONTEXT(s8, PCB_REG_S8, a0) + SAVE_U_PCB_CONTEXT(ra, PCB_REG_RA, a0) # save return address + SAVE_U_PCB_CONTEXT(t0, PCB_REG_SR, a0) # save status register + SAVE_U_PCB_CONTEXT(gp, PCB_REG_GP, a0) jal getpc nop getpc: - SAVE_U_PCB_CONTEXT(ra, PREG_PC, a0) # save return address + SAVE_U_PCB_CONTEXT(ra, PCB_REG_PC, a0) # save return address #ifdef CPU_CNMIPS @@ -262,7 +263,7 @@ getpc: sw t2, TD_MDFLAGS(a3) and t2, t0, ~MIPS_SR_COP_2_BIT # clear COP_2 enable bit - SAVE_U_PCB_CONTEXT(t2, PREG_SR, a0) # save status register + SAVE_U_PCB_CONTEXT(t2, PCB_REG_SR, a0) # save status register RESTORE_U_PCB_REG(t0, PS, a0) # get CPU status register and t2, t0, ~MIPS_SR_COP_2_BIT # clear COP_2 enable bit @@ -374,7 +375,7 @@ entry0set: */ sw2: PTR_L s0, TD_PCB(s7) - RESTORE_U_PCB_CONTEXT(sp, PREG_SP, s0) + RESTORE_U_PCB_CONTEXT(sp, PCB_REG_SP, s0) PTR_LA t1, _C_LABEL(pmap_activate) # s7 = new proc pointer jalr t1 # s7 = new proc pointer move a0, s7 # BDSLOT @@ -382,18 +383,18 @@ sw2: * Restore registers and return. */ move a0, s0 - RESTORE_U_PCB_CONTEXT(gp, PREG_GP, a0) - RESTORE_U_PCB_CONTEXT(v0, PREG_SR, a0) # restore kernel context - RESTORE_U_PCB_CONTEXT(ra, PREG_RA, a0) - RESTORE_U_PCB_CONTEXT(s0, PREG_S0, a0) - RESTORE_U_PCB_CONTEXT(s1, PREG_S1, a0) - RESTORE_U_PCB_CONTEXT(s2, PREG_S2, a0) - RESTORE_U_PCB_CONTEXT(s3, PREG_S3, a0) - RESTORE_U_PCB_CONTEXT(s4, PREG_S4, a0) - RESTORE_U_PCB_CONTEXT(s5, PREG_S5, a0) - RESTORE_U_PCB_CONTEXT(s6, PREG_S6, a0) - RESTORE_U_PCB_CONTEXT(s7, PREG_S7, a0) - RESTORE_U_PCB_CONTEXT(s8, PREG_S8, a0) + RESTORE_U_PCB_CONTEXT(gp, PCB_REG_GP, a0) + RESTORE_U_PCB_CONTEXT(v0, PCB_REG_SR, a0) # restore kernel context + RESTORE_U_PCB_CONTEXT(ra, PCB_REG_RA, a0) + RESTORE_U_PCB_CONTEXT(s0, PCB_REG_S0, a0) + RESTORE_U_PCB_CONTEXT(s1, PCB_REG_S1, a0) + RESTORE_U_PCB_CONTEXT(s2, PCB_REG_S2, a0) + RESTORE_U_PCB_CONTEXT(s3, PCB_REG_S3, a0) + RESTORE_U_PCB_CONTEXT(s4, PCB_REG_S4, a0) + RESTORE_U_PCB_CONTEXT(s5, PCB_REG_S5, a0) + RESTORE_U_PCB_CONTEXT(s6, PCB_REG_S6, a0) + RESTORE_U_PCB_CONTEXT(s7, PCB_REG_S7, a0) + RESTORE_U_PCB_CONTEXT(s8, PCB_REG_S8, a0) mfc0 t0, MIPS_COP_0_STATUS and t0, t0, MIPS_SR_INT_MASK