Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Apr 2013 17:23:54 +0000 (UTC)
From:      Warner Losh <imp@FreeBSD.org>
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
Message-ID:  <201304251723.r3PHNsV2056100@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201304251723.r3PHNsV2056100>