aboutsummaryrefslogtreecommitdiff
path: root/sys/sparc64/include/asmacros.h
diff options
context:
space:
mode:
authorJake Burkholder <jake@FreeBSD.org>2001-12-29 06:47:50 +0000
committerJake Burkholder <jake@FreeBSD.org>2001-12-29 06:47:50 +0000
commitbfe6f908326ed9be319713f7f02c04b19054bb39 (patch)
tree4645e028c36372d346077aa4e720cf1efd9fe889 /sys/sparc64/include/asmacros.h
parente5a86020b0cdb1b2a966666fdd90a3c431368dc0 (diff)
downloadsrc-bfe6f908326ed9be319713f7f02c04b19054bb39.tar.gz
src-bfe6f908326ed9be319713f7f02c04b19054bb39.zip
Add macros for dedicated register variables, for use in assmebler.
Add a PUTS macro.
Notes
Notes: svn path=/head/; revision=88616
Diffstat (limited to 'sys/sparc64/include/asmacros.h')
-rw-r--r--sys/sparc64/include/asmacros.h39
1 files changed, 33 insertions, 6 deletions
diff --git a/sys/sparc64/include/asmacros.h b/sys/sparc64/include/asmacros.h
index 98459e708671..276554080cd4 100644
--- a/sys/sparc64/include/asmacros.h
+++ b/sys/sparc64/include/asmacros.h
@@ -31,24 +31,51 @@
#ifdef _KERNEL
- .register %g2,#ignore
- .register %g3,#ignore
- .register %g6,#ignore
- .register %g7,#ignore
+/*
+ * Normal and alternate %g7 point to per-cpu data.
+ */
+#define PCPU_REG %g7
+
+/*
+ * Alternate %g5 points to a per-cpu stack for temporarily saving alternate
+ * globals, alternate %g6 points to the pcb of the current process.
+ */
+#define ASP_REG %g5
+#define PCB_REG %g6
+
+/*
+ * Interrupt %g6 points to a per-cpu interrupt queue, %g7 points to the
+ * interrupt vector table.
+ */
+#define IQ_REG %g6
+#define IV_REG %g7
+
+/*
+ * MMU %g7 points to the user tsb.
+ */
+#define TSB_REG %g7
#define PCPU(member) %g7 + PC_ ## member
#define PCPU_ADDR(member, reg) add %g7, PC_ ## member, reg
#define DEBUGGER() ta %xcc, 1
-#define PANIC(msg, reg) \
+#define PANIC(msg, r1) \
.sect .rodata ; \
9: .asciz msg ; \
.previous ; \
- setx 9b, reg, %o0 ; \
+ SET(9b, r1, %o0) ; \
call panic ; \
nop
+#define PUTS(msg, r1) \
+ .sect .rodata ; \
+9: .asciz msg ; \
+ .previous ; \
+ SET(9b, r1, %o0) ; \
+ call printf ; \
+ nop
+
#endif
#define DATA(name) \