svn commit: r249790 - in head/sys/mips: include mips

Warner Losh imp at FreeBSD.org
Tue Apr 23 09:38:19 UTC 2013


Author: imp
Date: Tue Apr 23 09:38:18 2013
New Revision: 249790
URL: http://svnweb.freebsd.org/changeset/base/249790

Log:
  Update trapframe to be consistent with the changes made to regnum.h. This
  should fix the booting problems people have been seeing.

Modified:
  head/sys/mips/include/frame.h
  head/sys/mips/include/regnum.h
  head/sys/mips/mips/db_interface.c
  head/sys/mips/mips/trap.c
  head/sys/mips/mips/vm_machdep.c

Modified: head/sys/mips/include/frame.h
==============================================================================
--- head/sys/mips/include/frame.h	Tue Apr 23 06:37:50 2013	(r249789)
+++ head/sys/mips/include/frame.h	Tue Apr 23 09:38:18 2013	(r249790)
@@ -37,6 +37,8 @@
 #ifndef _MACHINE_FRAME_H_
 #define	_MACHINE_FRAME_H_
 
+/* Note: This must also match regnum.h and regdef.h */
+
 struct trapframe {
 	register_t	zero;
 	register_t	ast;
@@ -46,6 +48,16 @@ struct trapframe {
 	register_t	a1;
 	register_t	a2;
 	register_t	a3;
+#if defined(__mips_n32) || defined(__mips_n64)
+	register_t	a4;
+	register_t	a5;
+	register_t	a6;
+	register_t	a7;
+	register_t	t0;
+	register_t	t1;
+	register_t	t2;
+	register_t	t3;
+#else
 	register_t	t0;
 	register_t	t1;
 	register_t	t2;
@@ -54,6 +66,7 @@ struct trapframe {
 	register_t	t5;
 	register_t	t6;
 	register_t	t7;
+#endif
 	register_t	s0;
 	register_t	s1;
 	register_t	s2;

Modified: head/sys/mips/include/regnum.h
==============================================================================
--- head/sys/mips/include/regnum.h	Tue Apr 23 06:37:50 2013	(r249789)
+++ head/sys/mips/include/regnum.h	Tue Apr 23 09:38:18 2013	(r249790)
@@ -87,10 +87,10 @@
 #define	T1	9
 #define	T2	10
 #define	T3	11
-#define	TA0	12
-#define	TA1	13
-#define	TA2	14
-#define	TA3	15
+#define	T4	12
+#define	T5	13
+#define	T6	14
+#define	T7	15
 #endif
 #define	S0	16
 #define	S1	17

Modified: head/sys/mips/mips/db_interface.c
==============================================================================
--- head/sys/mips/mips/db_interface.c	Tue Apr 23 06:37:50 2013	(r249789)
+++ head/sys/mips/mips/db_interface.c	Tue Apr 23 09:38:18 2013	(r249790)
@@ -77,6 +77,16 @@ struct db_variable db_regs[] = {
 	{ "a1",  DB_OFFSET(a1),		db_frame },
 	{ "a2",  DB_OFFSET(a2),		db_frame },
 	{ "a3",  DB_OFFSET(a3),		db_frame },
+#if defined(__mips_n32) || defined(__mips_n64)
+	{ "a4",  DB_OFFSET(a4),		db_frame },
+	{ "a5",  DB_OFFSET(a5),		db_frame },
+	{ "a6",  DB_OFFSET(a6),		db_frame },
+	{ "a7",  DB_OFFSET(a7),		db_frame },
+	{ "t0",  DB_OFFSET(t0),		db_frame },
+	{ "t1",  DB_OFFSET(t1),		db_frame },
+	{ "t2",  DB_OFFSET(t2),		db_frame },
+	{ "t3",  DB_OFFSET(t3),		db_frame },
+#else
 	{ "t0",  DB_OFFSET(t0),		db_frame },
 	{ "t1",  DB_OFFSET(t1),		db_frame },
 	{ "t2",  DB_OFFSET(t2),		db_frame },
@@ -85,6 +95,7 @@ struct db_variable db_regs[] = {
 	{ "t5",  DB_OFFSET(t5),		db_frame },
 	{ "t6",  DB_OFFSET(t6),		db_frame },
 	{ "t7",  DB_OFFSET(t7),		db_frame },
+#endif
 	{ "s0",  DB_OFFSET(s0),		db_frame },
 	{ "s1",  DB_OFFSET(s1),		db_frame },
 	{ "s2",  DB_OFFSET(s2),		db_frame },

Modified: head/sys/mips/mips/trap.c
==============================================================================
--- head/sys/mips/mips/trap.c	Tue Apr 23 06:37:50 2013	(r249789)
+++ head/sys/mips/mips/trap.c	Tue Apr 23 09:38:18 2013	(r249790)
@@ -363,10 +363,10 @@ cpu_fetch_syscall_args(struct thread *td
 			/*
 			 * Non-o32 ABIs support more arguments in registers.
 			 */
-			sa->args[3] = locr0->t4;
-			sa->args[4] = locr0->t5;
-			sa->args[5] = locr0->t6;
-			sa->args[6] = locr0->t7;
+			sa->args[3] = locr0->t0;
+			sa->args[4] = locr0->t1;
+			sa->args[5] = locr0->t2;
+			sa->args[6] = locr0->t3;
 			nsaved += 4;
 #ifdef COMPAT_FREEBSD32
 		}
@@ -389,10 +389,10 @@ cpu_fetch_syscall_args(struct thread *td
 			/*
 			 * Non-o32 ABIs support more arguments in registers.
 			 */
-			sa->args[4] = locr0->t4;
-			sa->args[5] = locr0->t5;
-			sa->args[6] = locr0->t6;
-			sa->args[7] = locr0->t7;
+			sa->args[4] = locr0->t0;
+			sa->args[5] = locr0->t1;
+			sa->args[6] = locr0->t2;
+			sa->args[7] = locr0->t3;
 			nsaved += 4;
 #ifdef COMPAT_FREEBSD32
 		}
@@ -1294,12 +1294,19 @@ log_frame_dump(struct trapframe *frame)
 	log(LOG_ERR, "\ta0: %#jx\ta1: %#jx\ta2: %#jx\ta3: %#jx\n",
 	    (intmax_t)frame->a0, (intmax_t)frame->a1, (intmax_t)frame->a2, (intmax_t)frame->a3);
 
+#if defined(__mips_n32) || defined(__mips_n64)
+	log(LOG_ERR, "\ta4: %#jx\ta5: %#jx\ta6: %#jx\ta6: %#jx\n",
+	    (intmax_t)frame->a4, (intmax_t)frame->a5, (intmax_t)frame->a6, (intmax_t)frame->a7);
+
+	log(LOG_ERR, "\tt0: %#jx\tt1: %#jx\tt2: %#jx\tt3: %#jx\n",
+	    (intmax_t)frame->t0, (intmax_t)frame->t1, (intmax_t)frame->t2, (intmax_t)frame->t3);
+#else
 	log(LOG_ERR, "\tt0: %#jx\tt1: %#jx\tt2: %#jx\tt3: %#jx\n",
 	    (intmax_t)frame->t0, (intmax_t)frame->t1, (intmax_t)frame->t2, (intmax_t)frame->t3);
 
 	log(LOG_ERR, "\tt4: %#jx\tt5: %#jx\tt6: %#jx\tt7: %#jx\n",
 	    (intmax_t)frame->t4, (intmax_t)frame->t5, (intmax_t)frame->t6, (intmax_t)frame->t7);
-
+#endif
 	log(LOG_ERR, "\tt8: %#jx\tt9: %#jx\ts0: %#jx\ts1: %#jx\n",
 	    (intmax_t)frame->t8, (intmax_t)frame->t9, (intmax_t)frame->s0, (intmax_t)frame->s1);
 
@@ -1334,13 +1341,19 @@ trap_frame_dump(struct trapframe *frame)
 
 	printf("\ta0: %#jx\ta1: %#jx\ta2: %#jx\ta3: %#jx\n",
 	    (intmax_t)frame->a0, (intmax_t)frame->a1, (intmax_t)frame->a2, (intmax_t)frame->a3);
+#if defined(__mips_n32) || defined(__mips_n64)
+	printf("\ta4: %#jx\ta5: %#jx\ta6: %#jx\ta7: %#jx\n",
+	    (intmax_t)frame->a4, (intmax_t)frame->a5, (intmax_t)frame->a6, (intmax_t)frame->a7);
 
 	printf("\tt0: %#jx\tt1: %#jx\tt2: %#jx\tt3: %#jx\n",
 	    (intmax_t)frame->t0, (intmax_t)frame->t1, (intmax_t)frame->t2, (intmax_t)frame->t3);
+#else
+	printf("\tt0: %#jx\tt1: %#jx\tt2: %#jx\tt3: %#jx\n",
+	    (intmax_t)frame->t0, (intmax_t)frame->t1, (intmax_t)frame->t2, (intmax_t)frame->t3);
 
 	printf("\tt4: %#jx\tt5: %#jx\tt6: %#jx\tt7: %#jx\n",
 	    (intmax_t)frame->t4, (intmax_t)frame->t5, (intmax_t)frame->t6, (intmax_t)frame->t7);
-
+#endif
 	printf("\tt8: %#jx\tt9: %#jx\ts0: %#jx\ts1: %#jx\n",
 	    (intmax_t)frame->t8, (intmax_t)frame->t9, (intmax_t)frame->s0, (intmax_t)frame->s1);
 

Modified: head/sys/mips/mips/vm_machdep.c
==============================================================================
--- head/sys/mips/mips/vm_machdep.c	Tue Apr 23 06:37:50 2013	(r249789)
+++ head/sys/mips/mips/vm_machdep.c	Tue Apr 23 09:38:18 2013	(r249790)
@@ -613,6 +613,16 @@ dump_trapframe(struct trapframe *trapfra
 	DB_PRINT_REG(trapframe, a1);
 	DB_PRINT_REG(trapframe, a2);
 	DB_PRINT_REG(trapframe, a3);
+#if defined(__mips_n32) || defined(__mips_n64)
+	DB_PRINT_REG(trapframe, a4);
+	DB_PRINT_REG(trapframe, a5);
+	DB_PRINT_REG(trapframe, a6);
+	DB_PRINT_REG(trapframe, a7);
+	DB_PRINT_REG(trapframe, t0);
+	DB_PRINT_REG(trapframe, t1);
+	DB_PRINT_REG(trapframe, t2);
+	DB_PRINT_REG(trapframe, t3);
+#else
 	DB_PRINT_REG(trapframe, t0);
 	DB_PRINT_REG(trapframe, t1);
 	DB_PRINT_REG(trapframe, t2);
@@ -621,6 +631,7 @@ dump_trapframe(struct trapframe *trapfra
 	DB_PRINT_REG(trapframe, t5);
 	DB_PRINT_REG(trapframe, t6);
 	DB_PRINT_REG(trapframe, t7);
+#endif
 	DB_PRINT_REG(trapframe, s0);
 	DB_PRINT_REG(trapframe, s1);
 	DB_PRINT_REG(trapframe, s2);


More information about the svn-src-head mailing list