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 <machine/cpu.h>
 #include <machine/regnum.h>
 #include <machine/cpuregs.h>
+#include <machine/pcb.h>
 
 #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 <machine/cpuregs.h>
 #include <machine/regnum.h>
 #include <machine/pte.h>
+#include <machine/pcb.h>
 
 #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
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to