Index: kernel/arch/sparc64/include/trap/syscall.h
===================================================================
--- kernel/arch/sparc64/include/trap/syscall.h	(revision 36f19c0f0dc80e99e7a2255fc75ddff351c22ac4)
+++ kernel/arch/sparc64/include/trap/syscall.h	(revision 05ae7081ae1690a4609ba4c709fbc67b4ae09a57)
@@ -46,8 +46,6 @@
 
 .macro TRAP_INSTRUCTION n
-	mov TT_TRAP_INSTRUCTION(\n), %g2
-	sethi %hi(syscall), %g1
 	ba trap_instruction_handler
-	or %g1, %lo(syscall), %g1
+	mov TT_TRAP_INSTRUCTION(\n) - TT_TRAP_INSTRUCTION(0), %g2
 .endm
 
Index: kernel/arch/sparc64/include/trap/trap_table.h
===================================================================
--- kernel/arch/sparc64/include/trap/trap_table.h	(revision 36f19c0f0dc80e99e7a2255fc75ddff351c22ac4)
+++ kernel/arch/sparc64/include/trap/trap_table.h	(revision 05ae7081ae1690a4609ba4c709fbc67b4ae09a57)
@@ -78,20 +78,24 @@
 
 /*
- * The following needs to be in sync with the
- * definition of the istate structure.
+ * The following needs to be in sync with the definition of the istate
+ * structure. The one STACK_ITEM_SIZE is counted for space holding the 7th
+ * argument to syscall_handler (i.e. syscall number) and the other
+ * STACK_ITEM_SIZE is counted because of the required alignment.
  */
-#define PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE	(STACK_WINDOW_SAVE_AREA_SIZE+(12*8))
-#define SAVED_TSTATE	-(1*8)
-#define SAVED_TPC	-(2*8)
-#define SAVED_TNPC	-(3*8)		/* <-- istate_t begins here */
-#define SAVED_Y		-(4*8)
-#define SAVED_I0	-(5*8)
-#define SAVED_I1	-(6*8)
-#define SAVED_I2	-(7*8)
-#define SAVED_I3	-(8*8)
-#define SAVED_I4	-(9*8)
-#define SAVED_I5	-(10*8)
-#define SAVED_I6	-(11*8)
-#define SAVED_I7	-(12*8)
+#define PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE	\
+    (STACK_WINDOW_SAVE_AREA_SIZE + STACK_ARG_SAVE_AREA_SIZE + \
+    (2 * STACK_ITEM_SIZE) + (12 * 8))
+#define SAVED_TSTATE	-(1 * 8)
+#define SAVED_TPC	-(2 * 8)
+#define SAVED_TNPC	-(3 * 8)	/* <-- istate_t begins here */
+#define SAVED_Y		-(4 * 8)
+#define SAVED_I0	-(5 * 8)
+#define SAVED_I1	-(6 * 8)
+#define SAVED_I2	-(7 * 8)
+#define SAVED_I3	-(8 * 8)
+#define SAVED_I4	-(9 * 8)
+#define SAVED_I5	-(10 * 8)
+#define SAVED_I6	-(11 * 8)
+#define SAVED_I7	-(12 * 8)
 
 .macro PREEMPTIBLE_HANDLER f
