Module Name:    src
Committed By:   matt
Date:           Tue Aug 16 06:55:12 UTC 2011

Modified Files:
        src/sys/arch/mips/mips: bds_emul.S copy.S fp.S locore.S locore_mips3.S
            mipsX_subr.S

Log Message:
Only jump through t9/ra (or k0) to help avoid hitting
the Loongson2 jump problem.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/mips/mips/bds_emul.S
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/mips/mips/copy.S
cvs rdiff -u -r1.43 -r1.44 src/sys/arch/mips/mips/fp.S
cvs rdiff -u -r1.187 -r1.188 src/sys/arch/mips/mips/locore.S
cvs rdiff -u -r1.101 -r1.102 src/sys/arch/mips/mips/locore_mips3.S
cvs rdiff -u -r1.52 -r1.53 src/sys/arch/mips/mips/mipsX_subr.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/mips/mips/bds_emul.S
diff -u src/sys/arch/mips/mips/bds_emul.S:1.4 src/sys/arch/mips/mips/bds_emul.S:1.5
--- src/sys/arch/mips/mips/bds_emul.S:1.4	Sat Feb 26 11:27:59 2011
+++ src/sys/arch/mips/mips/bds_emul.S	Tue Aug 16 06:55:11 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: bds_emul.S,v 1.4 2011/02/26 11:27:59 tsutsui Exp $	*/
+/*	$NetBSD: bds_emul.S,v 1.5 2011/08/16 06:55:11 matt Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -66,8 +66,8 @@
 
 	srl	t0, a0, 26-PTR_SCALESHIFT
 	andi	t0, 0x3F << PTR_SCALESHIFT
-	PTR_L	t0, bcemul_optbl(t0)
-	j	t0
+	PTR_L	t9, bcemul_optbl(t0)
+	jr	t9
 
 	.rdata
 bcemul_optbl:
@@ -173,7 +173,7 @@
 	REG_PROLOGUE
 	REG_L	v0, TF_REG_ZERO(t1)		# load source
 	REG_EPILOGUE
-	j	ra				# execute the instruction
+	jr	ra				# execute the instruction
 
 bcemul_uimmed_prologue:
 	srl	t1, a0, 21-REG_SCALESHIFT	# rs (source)
@@ -186,7 +186,7 @@
 	REG_PROLOGUE
 	REG_L	v0, TF_REG_ZERO(t1)		# load source
 	REG_EPILOGUE
-	j	ra
+	jr	ra
 
 #ifndef __mips_o32
 bcemul_daddi:
@@ -441,11 +441,12 @@
 	andi	t0, a0, 0x3f			# get special code
 	sll	t1, t0, 3			# calculate index in specialop
 	sll	t0, PTR_SCALESHIFT
-	PTR_LA	t9, bcemul_special_op(t1)
-	PTR_L	t0, bcemul_specialtbl(t0)
-	j	t0
+	PTR_LA	t0, bcemul_special_op(t1)
+	PTR_L	t9, bcemul_specialtbl(t0)
+	jr	t9
 
 bcemul_special_3op_prologue:
+	move	t9, t0
 	srl	t0, a0, 21-REG_SCALESHIFT	# rs (source1)
 	srl	t1, a0, 16-REG_SCALESHIFT	# rt (source2)
 	srl	t2, a0, 11-REG_SCALESHIFT	# rd (dest)
@@ -459,9 +460,10 @@
 	REG_L	v0, TF_REG_ZERO(t0)		# load source1
 	REG_L	v1, TF_REG_ZERO(t1)		# load source2
 	REG_EPILOGUE
-	j	t9
+	jr	t9
 
 bcemul_special_2src_prologue:
+	move	t9, t0
 	srl	t0, a0, 21-REG_SCALESHIFT	# rs (source1)
 	srl	t1, a0, 16-REG_SCALESHIFT	# rt (source2)
 	andi	t0, REG_REGMASK
@@ -472,9 +474,10 @@
 	REG_L	v0, TF_REG_ZERO(t0)		# load source1
 	REG_L	v1, TF_REG_ZERO(t1)		# load source2
 	REG_EPILOGUE
-	j	t9
+	jr	t9
 
 bcemul_special_genshift:
+	move	t9, t0
 	srl	t1, a0, 16-REG_SCALESHIFT	# rt (source)
 	srl	t2, a0, 11-REG_SCALESHIFT	# rd (dest)
 	srl	v1, a0, 6			# sa
@@ -606,7 +609,7 @@
 	REG_L	ra, CALLFRAME_RA(sp)
 	REG_L	s0, CALLFRAME_S0(sp)
 	PTR_ADDU sp, CALLFRAME_SIZ
-	j	ra
+	jr	ra
 
 /*
  * Send SIGILL, SIGFPE.

Index: src/sys/arch/mips/mips/copy.S
diff -u src/sys/arch/mips/mips/copy.S:1.14 src/sys/arch/mips/mips/copy.S:1.15
--- src/sys/arch/mips/mips/copy.S:1.14	Wed Jul  6 09:27:35 2011
+++ src/sys/arch/mips/mips/copy.S	Tue Aug 16 06:55:11 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: copy.S,v 1.14 2011/07/06 09:27:35 matt Exp $	*/
+/*	$NetBSD: copy.S,v 1.15 2011/08/16 06:55:11 matt Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -499,9 +499,9 @@
 	 PTR_S	v0, PCB_ONFAULT(v1)
 	INT_S	a1, 0(a0)			# store word
 	PTR_S	zero, PCB_ONFAULT(v1)
-	PTR_L	v1, _C_LABEL(mips_cache_ops) + MIPSX_FLUSHICACHE
+	PTR_L	t9, _C_LABEL(mips_cache_ops) + MIPSX_FLUSHICACHE
 	move	v0, zero
-	j	v1				# NOTE: must not clobber v0!
+	j	t9				# NOTE: must not clobber v0!
 	 li	a1, 4				# size of word
 END(ustore_uint32_isync)
 

Index: src/sys/arch/mips/mips/fp.S
diff -u src/sys/arch/mips/mips/fp.S:1.43 src/sys/arch/mips/mips/fp.S:1.44
--- src/sys/arch/mips/mips/fp.S:1.43	Sat Feb 26 15:41:32 2011
+++ src/sys/arch/mips/mips/fp.S	Tue Aug 16 06:55:11 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: fp.S,v 1.43 2011/02/26 15:41:32 tsutsui Exp $	*/
+/*	$NetBSD: fp.S,v 1.44 2011/08/16 06:55:11 matt Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -151,29 +151,29 @@
 single_op:
 	andi	v0, a0, 0x3F		# get FUNC field
 	sll	v0, v0, PTR_SCALESHIFT
-	PTR_L	v0, func_single_tbl(v0)
-	j	v0
+	PTR_L	t9, func_single_tbl(v0)
+	j	t9
 double_op:
 	andi	v0, a0, 0x3F		# get FUNC field
 	sll	v0, v0, PTR_SCALESHIFT
-	PTR_L	v0, func_double_tbl(v0)
-	j	v0
+	PTR_L	t9, func_double_tbl(v0)
+	j	t9
 single_fixed_op:
 	andi	v0, a0, 0x3F		# get FUNC field
 	sll	v0, v0, PTR_SCALESHIFT
-	PTR_L	v0, func_single_fixed_tbl(v0)
-	j	v0
+	PTR_L	t9, func_single_fixed_tbl(v0)
+	j	t9
 long_fixed_op:
 	andi	v0, a0, 0x3F		# get FUNC field
 	sll	v0, v0, PTR_SCALESHIFT
-	PTR_L	v0, func_long_fixed_tbl(v0)
-	j	v0
+	PTR_L	t9, func_long_fixed_tbl(v0)
+	j	t9
 #if (defined(__mips_n32) || defined(__mips_n64)) && 0
 paired_single_op:
 	andi	v0, a0, 0x3F		# get FUNC field
 	sll	v0, v0, PTR_SCALESHIFT
-	PTR_L	v0, func_paired_single_tbl(v0)
-	j	v0
+	PTR_L	t9, func_paired_single_tbl(v0)
+	j	t9
 #else
 #define	paired_single_op	ill
 #endif
@@ -766,8 +766,8 @@
 branchc1:
 	srl	v0, a0, 16 - PTR_SCALESHIFT
 	andi	v0, v0, 0x1f << PTR_SCALESHIFT
-	PTR_L	v0, branchc1_tbl(v0)
-	j	v0
+	PTR_L	t9, branchc1_tbl(v0)
+	j	t9
 
 	.rdata
 branchc1_tbl:

Index: src/sys/arch/mips/mips/locore.S
diff -u src/sys/arch/mips/mips/locore.S:1.187 src/sys/arch/mips/mips/locore.S:1.188
--- src/sys/arch/mips/mips/locore.S:1.187	Wed Apr  6 13:30:33 2011
+++ src/sys/arch/mips/mips/locore.S	Tue Aug 16 06:55:12 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.S,v 1.187 2011/04/06 13:30:33 tsutsui Exp $	*/
+/*	$NetBSD: locore.S,v 1.188 2011/08/16 06:55:12 matt Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -332,7 +332,7 @@
 #if IPL_SCHED != IPL_HIGH
 	j	_C_LABEL(splhigh_noprof)
 #else
-	j	ra
+	jr	ra
 #endif
 	 PTR_ADDU sp, CALLFRAME_SIZ
 
@@ -412,7 +412,7 @@
 	/*
 	 * Almost everything (all except sp) is restored so we can return.
 	 */
-	j	ra
+	jr	ra
 	 PTR_ADDU sp, CALLFRAME_SIZ
 END(softint_fast_dispatch)
 #endif /* __HAVE_FAST_SOFTINTS */
@@ -435,7 +435,7 @@
 	li	v0, 0				# load success
 1:
 	PTR_S	zero, PCB_ONFAULT(t0)		# reset fault handler
-	j	ra				# and return.
+	jr	ra				# and return.
 	 nop
 END(lwp_oncpu)
 	
@@ -468,7 +468,7 @@
 	REG_S	ra, PCB_CONTEXT+SF_REG_RA(a0)
 	REG_S	v0, PCB_CONTEXT+SF_REG_SR(a0)
 	REG_EPILOGUE
-	j	ra
+	jr	ra
 	move	v0, zero
 END(savectx)
 
@@ -497,7 +497,7 @@
 	REG_S	ra, SF_REG_RA(a0)
 	REG_S	v0, SF_REG_SR(a0)
 	REG_EPILOGUE
-	j	ra
+	jr	ra
 	move	v0, zero
 END(setjmp)
 
@@ -523,7 +523,7 @@
 	REG_EPILOGUE
 	mtc0	v0, MIPS_COP_0_STATUS
 	COP0_SYNC
-	j	ra
+	jr	ra
 	 li	v0, 1
 END(longjmp)
 #endif
@@ -538,7 +538,7 @@
  */
 LEAF_NOPROFILE(mips_cp0_cause_read)
 	mfc0	v0, MIPS_COP_0_CAUSE
-	j	ra
+	jr	ra
 	 nop
 END(mips_cp0_cause_read)
 
@@ -560,7 +560,7 @@
  */
 LEAF(mips_cp0_status_read)
 	mfc0	v0, MIPS_COP_0_STATUS
-	j	ra
+	jr	ra
 	 nop
 END(mips_cp0_status_read)
 
@@ -731,7 +731,7 @@
 	bgtz		a2, 1b
 	PTR_ADDU	a0, 8*SZREG
 	.set	pop
-	j	ra
+	jr	ra
 	nop
 END(mips_pagecopy)
 
@@ -755,7 +755,7 @@
 	bgtz		a1,1b
 	PTR_ADDU	a0, 8*SZREG
 	.set	pop
-	j	ra
+	jr	ra
 	nop
 END(mips_pagezero)
 
@@ -813,7 +813,7 @@
 
 	REG_L	ra, XCALLFRAME_RA(sp)
 	PTR_ADDU sp, XCALLFRAME_SIZ
-	j	ra
+	jr	ra
 	nop
 #undef XCALLFRAME_RA
 #undef XCALLFRAME_SIZ

Index: src/sys/arch/mips/mips/locore_mips3.S
diff -u src/sys/arch/mips/mips/locore_mips3.S:1.101 src/sys/arch/mips/mips/locore_mips3.S:1.102
--- src/sys/arch/mips/mips/locore_mips3.S:1.101	Sun Jul 31 15:39:29 2011
+++ src/sys/arch/mips/mips/locore_mips3.S	Tue Aug 16 06:55:11 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore_mips3.S,v 1.101 2011/07/31 15:39:29 matt Exp $	*/
+/*	$NetBSD: locore_mips3.S,v 1.102 2011/08/16 06:55:11 matt Exp $	*/
 
 /*
  * Copyright (c) 1997 Jonathan Stone (hereinafter referred to as the author)
@@ -158,7 +158,7 @@
 XLEAF(mips64r2_wbflush)
 	nop
 	sync
-	j	ra
+	jr	ra
 	 nop
 END(mips3_wbflush)
 
@@ -185,7 +185,7 @@
 	nop
 	nop
 	nop
-	j	ra
+	jr	ra
 	 nop
 END(mips_wait_idle)
 
@@ -196,7 +196,7 @@
  */
 LEAF(mips3_cp0_compare_read)
 	mfc0	v0, MIPS_COP_0_COMPARE
-	j	ra
+	jr	ra
 	 nop
 END(mips3_cp0_compare_read)
 
@@ -217,7 +217,7 @@
  */
 LEAF(mips3_cp0_config_read)
 	mfc0	v0, MIPS_COP_0_CONFIG
-	j	ra
+	jr	ra
 	 nop
 END(mips3_cp0_config_read)
 
@@ -245,7 +245,7 @@
  */
 LEAF(mipsNN_cp0_config1_read)
 	mfc0	v0, MIPS_COP_0_CONFIG, 1
-	j	ra
+	jr	ra
 	 nop
 END(mipsNN_cp0_config1_read)
 
@@ -266,7 +266,7 @@
  */
 LEAF(mipsNN_cp0_config2_read)
 	mfc0	v0, MIPS_COP_0_CONFIG, 2
-	j	ra
+	jr	ra
 	 nop
 END(mipsNN_cp0_config2_read)
 
@@ -277,7 +277,7 @@
  */
 LEAF(mipsNN_cp0_config3_read)
 	mfc0	v0, MIPS_COP_0_CONFIG, 3
-	j	ra
+	jr	ra
 	 nop
 END(mipsNN_cp0_config3_read)
 
@@ -407,7 +407,7 @@
  *	Set the value of the CP0 USERLOCAL (TLB_CONTEXT, select 2) register.
  */
 LEAF(mipsNN_cp0_hwrena_write)
-	j	ra
+	jr	ra
 	 mtc0	a0, MIPS_COP_0_HWRENA
 END(mipsNN_cp0_hwrena_write)
 
@@ -416,7 +416,7 @@
  *	Set the value of the CP0 USERLOCAL (TLB_CONTEXT, select 2) register.
  */
 LEAF(mipsNN_cp0_userlocal_write)
-	j	ra
+	jr	ra
 	 _MTC0	a0, MIPS_COP_0_TLB_CONTEXT, 2
 END(mipsNN_cp0_userlocal_write)
 #endif /* (MIPS32R2 + MIPS64R2) > 0 */
@@ -430,7 +430,7 @@
  */
 LEAF(mips3_cp0_count_read)
 	mfc0	v0, MIPS_COP_0_COUNT
-	j	ra
+	jr	ra
 	 nop
 END(mips3_cp0_count_read)
 WEAK_ALIAS(cpu_counter32, mips3_cp0_count_read)
@@ -452,7 +452,7 @@
  */
 LEAF(mips3_cp0_wired_read)
 	mfc0	v0, MIPS_COP_0_TLB_WIRED
-	j	ra
+	jr	ra
 	 nop
 END(mips3_cp0_wired_read)
 
@@ -598,7 +598,7 @@
 	mtc0	t0, MIPS_COP_0_STATUS           # Restore KX
 	COP0_SYNC
 	PTR_S	zero, PCB_ONFAULT(v1)
-	j	ra
+	jr	ra
 	 move	v0, zero			# made it w/o errors
 END(badaddr64)
 
@@ -606,7 +606,7 @@
 	mtc0	t0, MIPS_COP_0_STATUS		# Restore KX
 	COP0_SYNC
 	PTR_S	zero, PCB_ONFAULT(v1)
-	j	ra
+	jr	ra
 	 li	v0, -1
 END(baderr64)
 
@@ -638,7 +638,7 @@
 	srl	v0, v0, 0
 #endif
 #endif /* __mips_o32 */
-	j	ra
+	jr	ra
 	 nop
 END(mips3_cp0_tlb_entry_hi_probe)
 
@@ -666,7 +666,7 @@
 	srl	v0, v0, 0
 #endif
 #endif /* __mips_o32 */
-	j	ra
+	jr	ra
 	 nop
 END(mips3_cp0_tlb_entry_lo_probe)
 

Index: src/sys/arch/mips/mips/mipsX_subr.S
diff -u src/sys/arch/mips/mips/mipsX_subr.S:1.52 src/sys/arch/mips/mips/mipsX_subr.S:1.53
--- src/sys/arch/mips/mips/mipsX_subr.S:1.52	Tue Aug  2 05:13:21 2011
+++ src/sys/arch/mips/mips/mipsX_subr.S	Tue Aug 16 06:55:12 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: mipsX_subr.S,v 1.52 2011/08/02 05:13:21 matt Exp $	*/
+/*	$NetBSD: mipsX_subr.S,v 1.53 2011/08/16 06:55:12 matt Exp $	*/
 
 /*
  * Copyright 2002 Wasabi Systems, Inc.
@@ -334,6 +334,10 @@
  */
 VECTOR(MIPSX(tlb_miss), unknown)
 	.set	noat
+#ifdef MIPS3_LOONGSON2
+	li	k0, MIPS_DIAG_BTB_CLEAR
+	mtc0	k0, MIPS_COP_0_DIAG
+#endif
 	_MFC0	k0, MIPS_COP_0_BAD_VADDR	#00: k0=bad address
 	lui	k1, %hi(CPUVAR(PMAP_SEG0TAB))	#01: k1=hi of seg0tab
 	bltz	k0, MIPSX(kernelfault)		#02: k0<0 -> 4f (kernel fault)
@@ -360,10 +364,12 @@
 	_SLL	k1, WIRED_SHIFT			#14: chop top 2 bits (part 2a)
 	_SRL	k1, WIRED_SHIFT			#15: chop top 2 bits (part 2b)
 	_MTC0	k1, MIPS_COP_0_TLB_LO1		#16: lo1 is loaded
+#ifndef MIPS3_LOONGSON2
 	sll	$0, $0, 3			#17: standard nop (ehb)
 #ifdef MIPS3
 	nop					#18: extra nop for QED5230
 #endif
+#endif
 	tlbwr					#19: write to tlb
 	sll	$0, $0, 3			#1a: standard nop (ehb)
 #if (MIPS3 + MIPS64 + MIPS64R2) > 0
@@ -434,7 +440,7 @@
 	li	k1, MIPS_KSEG1_START			#04
 	or	k0, k1					#05
 	lui	k1, %hi(CPUVAR(CURLWP))			#06: k1=hi of curlwp
-	j	k0					#07
+	jr	k0					#07
 	 PTR_L	k1, %lo(CPUVAR(CURLWP))(k1)		#08: k1=lo of curlwp
 _VECTOR_END(MIPSX(cache))
 
@@ -475,7 +481,7 @@
 						#  we dont have to shift.
 	PTR_L	k0, 0(k0)			#09: get the function address
 	lui	k1, %hi(CPUVAR(CURLWP))		#0a: k1=hi of curlwp
-	j	k0				#0b: jump to the function
+	jr	k0				#0b: jump to the function
 	 PTR_L	k1, %lo(CPUVAR(CURLWP))(k1)	#0c: k1=lo of curlwp
 	nop					#0d
 	nop					#0e
@@ -510,7 +516,7 @@
 	PTR_LA	k0, MIPSX(kern_intr)		#07: nope, kernel intr
 1:
 	lui	k1, %hi(CPUVAR(CURLWP))		#09: k1=hi of curlwp
-	j	k0				#0a: jump to the function
+	jr	k0				#0a: jump to the function
 	 PTR_L	k1, %lo(CPUVAR(CURLWP))(k1)	#0b: k1=lo of curlwp
 	.set	at
 _VECTOR_END(MIPSX(intr))
@@ -995,6 +1001,10 @@
 	/*
 	 * Save a minimum of registers to see if this is rdhwr $3,$29
 	 */
+#ifdef MIPS3_LOONGSON2
+	li	k0, MIPS_DIAG_BTB_CLEAR
+	mtc0	k0, MIPS_COP_0_DIAG
+#endif
 	/* K1 already has CURLWP */
 	PTR_L	k0, L_PCB(k1)			# XXXuvm_lwp_getuarea
 	PTR_ADDU k0, USPACE - TF_SIZ - CALLFRAME_SIZ
@@ -1091,13 +1101,13 @@
 	_MFC0	a3, MIPS_COP_0_EXC_PC		# 4th arg is exception PC
 	REG_S	t8, CALLFRAME_SIZ+TF_REG_T8(k0)	# will be MIPS_CURLWP
 	REG_S	t9, CALLFRAME_SIZ+TF_REG_T9(k0)
+	REG_S	v0, CALLFRAME_SIZ+TF_REG_MULLO(k0)
+	REG_S	v1, CALLFRAME_SIZ+TF_REG_MULHI(k0)
 	REG_S	gp, CALLFRAME_SIZ+TF_REG_GP(k0)
 	REG_S	sp, CALLFRAME_SIZ+TF_REG_SP(k0)
 	REG_S	s8, CALLFRAME_SIZ+TF_REG_S8(k0)
 	REG_S	ra, CALLFRAME_SIZ+TF_REG_RA(k0)
 	REG_S	a0, CALLFRAME_SIZ+TF_REG_SR(k0)
-	REG_S	v0, CALLFRAME_SIZ+TF_REG_MULLO(k0)
-	REG_S	v1, CALLFRAME_SIZ+TF_REG_MULHI(k0)
 	REG_S	a3, CALLFRAME_SIZ+TF_REG_EPC(k0)
 #ifdef __GP_SUPPORT__
 	PTR_LA	gp, _C_LABEL(_gp)		# switch to kernel GP
@@ -1873,7 +1883,7 @@
 	PTR_S	t3, TLBMASK_HI(a1)
 	INT_S	ta0, TLBMASK_LO0(a1)
 	INT_S	ta1, TLBMASK_LO1(a1)
-	j	ra
+	jr	ra
 	 INT_S	t2, TLBMASK_MASK(a1)
 END(MIPSX(tlb_read_indexed))
 
@@ -2299,6 +2309,10 @@
 	REG_L	s6, CALLFRAME_SIZ+TF_REG_S6(sp)		# $22
 	REG_L	s7, CALLFRAME_SIZ+TF_REG_S7(sp)		# $23
 	REG_L	s8, CALLFRAME_SIZ+TF_REG_S8(sp)		# $30
+#ifdef MIPS3_LOONGSON2
+	li	t0, (MIPS_DIAG_BTB_CLEAR|MIPS_DIAG_ITLB_CLEAR)
+	mtc0	t0, MIPS_COP_0_DIAG
+#endif
 MIPSX(user_intr_return):
 #ifdef PARANOIA
 	PTR_L	t0, L_CPU(MIPS_CURLWP)
@@ -2355,7 +2369,8 @@
 	# Call the routine specified by cpu_setfunc()
 	# and return directly to user_return
 	PTR_LA	ra, MIPSX(user_return)
-	jr	s0
+	move	t9, s0
+	jr	t9
 	 move	a0, s1
 END(MIPSX(setfunc_trampoline))
 
@@ -2437,7 +2452,7 @@
 	PTR_L	v0, L_PRIVATE(a0)		# get lwp private
 	_MTC0	v0, MIPS_COP_0_TLB_CONTEXT, 4	# make available for rdhwr
 #endif
-	j	ra
+	jr	ra
 	 nop
 END(MIPSX(cpu_switch_resume))
 
@@ -2604,7 +2619,7 @@
 	bgtz	a1, 1b
 	addu	a0, 64
 
-	j	ra
+	jr	ra
 	nop
 END(MIPSX(pagezero))
 #endif /* USE_64BIT_INSTRUCTIONS */

Reply via email to