PERFORCE change 55016 for review
Juli Mallett
jmallett at FreeBSD.org
Tue Jun 15 12:38:33 GMT 2004
http://perforce.freebsd.org/chv.cgi?CH=55016
Change 55016 by jmallett at jmallett_oingo on 2004/06/15 12:38:03
Kill locore_mips3.S. Just gut the MIPS32/MIPS64 functions for now,
as I'm purposely rolling back to something simpler, and again, this
was part of accomodating NetBSD before I understood a lot of the
extremities here. Replace setjmp/longjmp with versions copied from
my savectx/cpu_throw in swtch.S. Tested the latter with ddb and a
simple "call yourmom" which correctly returned to the db> prompt
rather than panicking :)
Affected files ...
.. //depot/projects/mips/sys/conf/files.mips#38 edit
.. //depot/projects/mips/sys/mips/include/locore.h#14 edit
.. //depot/projects/mips/sys/mips/mips/db_interface.c#16 edit
.. //depot/projects/mips/sys/mips/mips/locore_mips3.S#15 delete
.. //depot/projects/mips/sys/mips/mips/support.S#11 edit
Differences ...
==== //depot/projects/mips/sys/conf/files.mips#38 (text+ko) ====
@@ -19,7 +19,6 @@
mips/mips/exception.S standard
mips/mips/in_cksum.c optional inet
mips/mips/locore.S standard no-obj
-mips/mips/locore_mips3.S standard
mips/mips/machdep.c standard
mips/mips/pmap.c standard
mips/mips/sig_machdep.c standard
==== //depot/projects/mips/sys/mips/include/locore.h#14 (text+ko) ====
@@ -31,11 +31,6 @@
struct tlb;
-uint32_t mipsNN_cp0_config1_read(void);
-void mipsNN_cp0_config1_write(uint32_t);
-uint32_t mipsNN_cp0_config2_read(void);
-uint32_t mipsNN_cp0_config3_read(void);
-
/*
* CPU identification, from PRID register.
*/
==== //depot/projects/mips/sys/mips/mips/db_interface.c#16 (text+ko) ====
@@ -352,8 +352,6 @@
DB_COMMAND(cp0, db_cp0dump_cmd)
{
- uint32_t val;
-
SHOW32(MIPS_COP_0_TLB_INDEX, "index");
SHOW32(MIPS_COP_0_TLB_RANDOM, "random");
@@ -381,9 +379,6 @@
SHOW32(MIPS_COP_0_PRID, "prid");
SHOW32(MIPS_COP_0_CONFIG, "config");
- val = mipsNN_cp0_config1_read();
- printf(" config1: %#x\n", val);
-
SHOW64(MIPS_COP_0_LLADDR, "lladdr");
SHOW64(MIPS_COP_0_WATCH_LO, "watchlo");
==== //depot/projects/mips/sys/mips/mips/support.S#11 (text+ko) ====
@@ -26,9 +26,13 @@
* $FreeBSD$
*/
+#include "opt_ddb.h"
+
#include <machine/asm.h>
#include <machine/cpuregs.h>
+#include "assym.s"
+
/*
* If an unaligned access occurs, someone is doing something wrong, don't
* fixup here, let things happen elsewhere, if at all. We shouldn't suck.
@@ -281,3 +285,53 @@
jr ra
nop
END(copyinstr)
+
+#ifdef DDB
+
+/*
+ * setjmp(9)
+ * <v0>int setjmp(<a0>jmp_buf)
+ */
+ENTRY(setjmp)
+ mfc0 t0, MIPS_COP_0_STATUS
+ sd s0, SF_REG_S0(a0)
+ sd s1, SF_REG_S1(a0)
+ sd s2, SF_REG_S2(a0)
+ sd s3, SF_REG_S3(a0)
+ sd s4, SF_REG_S4(a0)
+ sd s5, SF_REG_S5(a0)
+ sd s6, SF_REG_S6(a0)
+ sd s7, SF_REG_S7(a0)
+ sd s8, SF_REG_S8(a0)
+ sd sp, SF_REG_SP(a0)
+ sd t0, SF_REG_SR(a0)
+ sd ra, SF_REG_RA(a0)
+ li v0, 0
+ jr ra
+ nop
+END(setjmp)
+
+/*
+ * longjmp(9)
+ * void longjmp(<a0>jmp_buf, <a1>retval)
+ */
+ENTRY(longjmp)
+ ld s0, SF_REG_S0(a0)
+ ld s1, SF_REG_S1(a0)
+ ld s2, SF_REG_S2(a0)
+ ld s3, SF_REG_S3(a0)
+ ld s4, SF_REG_S4(a0)
+ ld s5, SF_REG_S5(a0)
+ ld s6, SF_REG_S6(a0)
+ ld s7, SF_REG_S7(a0)
+ ld s8, SF_REG_S8(a0)
+ ld sp, SF_REG_SP(a0)
+ ld ra, SF_REG_RA(a0)
+ ld t0, SF_REG_SR(a0)
+ mtc0 t0, MIPS_COP_0_STATUS
+ move v0, a1
+ jr ra
+ nop
+END(longjmp)
+
+#endif /* DDB */
More information about the p4-projects
mailing list