Module Name:    src
Committed By:   matt
Date:           Wed Dec 29 00:49:40 UTC 2010

Modified Files:
        src/sys/arch/mips/mips [matt-nb5-mips64]: fp.S

Log Message:
Move away from StudlyCaps and switch to the new names.
Remove branch delay slot emulation to a different file.


To generate a diff of this commit:
cvs rdiff -u -r1.33.38.11 -r1.33.38.12 src/sys/arch/mips/mips/fp.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/fp.S
diff -u src/sys/arch/mips/mips/fp.S:1.33.38.11 src/sys/arch/mips/mips/fp.S:1.33.38.12
--- src/sys/arch/mips/mips/fp.S:1.33.38.11	Tue May 11 20:54:27 2010
+++ src/sys/arch/mips/mips/fp.S	Wed Dec 29 00:49:39 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: fp.S,v 1.33.38.11 2010/05/11 20:54:27 matt Exp $	*/
+/*	$NetBSD: fp.S,v 1.33.38.12 2010/12/29 00:49:39 matt Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -100,12 +100,12 @@
 
 /*----------------------------------------------------------------------------
  *
- * MachEmulateFP --
+ * mips_emul_fp --
  *
  *	Emulate unimplemented floating point operations.
- *	This routine should only be called by MachFPInterrupt().
+ *	This routine should only be called by mips_fpu_intr().
  *
- *	MachEmulateFP(uint32_t instr, struct frame *frame, uint32_t cause)
+ *	mips_emul_fp(uint32_t instr, struct trapframe *tf, uint32_t cause)
  *
  * Results:
  *	None.
@@ -126,7 +126,7 @@
 #error N32/N64 ABI callframe error
 #endif
 #endif
-NESTED(MachEmulateFP, CALLFRAME_SIZ, ra)
+NESTED(mips_emul_fp, CALLFRAME_SIZ, ra)
 	PTR_SUBU sp, CALLFRAME_SIZ
 	REG_S	ra, CALLFRAME_RA(sp)
 	REG_S	a1, CALLFRAME_FRAME(sp)
@@ -844,7 +844,7 @@
 	REG_L	a0, TF_REG_EPC(a1)
 	REG_EPILOGUE
 	PTR_ADDU a0, 4
-	jal	_C_LABEL(fuiword)
+	jal	_C_LABEL(ufetch_uint32)
 
 	move	a0, v0
 	REG_L	a1, CALLFRAME_FRAME(sp)
@@ -854,11 +854,11 @@
 	li	t0, MIPS_CR_BR_DELAY
 	or	a2, a2, t0
 
-	/* Free MachEmulateFP call frame */
+	/* Free mips_emul_fp call frame */
 	REG_L	ra, CALLFRAME_RA(sp)
 	PTR_ADDU sp, CALLFRAME_SIZ
 
-	j	_C_LABEL(bcemul_delay_slot)
+	j	_C_LABEL(mips_emul_branchdelayslot)
 #endif
 
 /*
@@ -2900,7 +2900,7 @@
 	move	a1, v0				# 2nd arg is instruction PC
 						# 3rd arg is FP CSR
 	move	a3, zero			# 4th arg is FALSE
-	jal	_C_LABEL(MachEmulateBranch)	# compute PC after branch
+	jal	_C_LABEL(mips_emul_branch)	# compute PC after branch
 
 	REG_L	a1, CALLFRAME_FRAME(sp)
 	b	2f
@@ -2918,13 +2918,13 @@
 	REG_L	ra, CALLFRAME_RA(sp)
 	PTR_ADDU sp, CALLFRAME_SIZ
 	j	ra
-END(MachEmulateFP)
+END(mips_emul_fp)
 
 /*----------------------------------------------------------------------------
  * get_fs_int --
  *
  *	Read (integer) the FS register (bits 15-11).
- *	This is an internal routine used by MachEmulateFP only.
+ *	This is an internal routine used by mips_emul_fp only.
  *
  * Results:
  *	t0	contains the sign
@@ -3033,7 +3033,7 @@
  *
  *	Read (single precision) the FT register (bits 20-16) and
  *	the FS register (bits 15-11) and break up into fields.
- *	This is an internal routine used by MachEmulateFP only.
+ *	This is an internal routine used by mips_emul_fp only.
  *
  * Results:
  *	t0	contains the FS sign
@@ -3153,7 +3153,7 @@
  *
  *	Read (single precision) the FS register (bits 15-11) and
  *	break up into fields.
- *	This is an internal routine used by MachEmulateFP only.
+ *	This is an internal routine used by mips_emul_fp only.
  *
  * Results:
  *	t0	contains the sign
@@ -3271,7 +3271,7 @@
  *
  *	Read (double precision) the FT register (bits 20-16) and
  *	the FS register (bits 15-11) and break up into fields.
- *	This is an internal routine used by MachEmulateFP only.
+ *	This is an internal routine used by mips_emul_fp only.
  *
  * Results:
  *	t0	contains the FS sign
@@ -3416,7 +3416,7 @@
  *
  *	Read (double precision) the FS register (bits 15-11) and
  *	break up into fields.
- *	This is an internal routine used by MachEmulateFP only.
+ *	This is an internal routine used by mips_emul_fp only.
  *
  * Results:
  *	t0	contains the sign
@@ -3558,7 +3558,7 @@
  *
  *	Read (single precision) the FS register (bits 15-11) and
  *	the FT register (bits 20-16) and break up into fields.
- *	This is an internal routine used by MachEmulateFP only.
+ *	This is an internal routine used by mips_emul_fp only.
  *
  * Results:
  *	t0	contains the sign
@@ -3760,7 +3760,7 @@
  *
  *	Read (double precision) the FS register (bits 15-11) and
  *	the FT register (bits 20-16) and break up into fields.
- *	This is an internal routine used by MachEmulateFP only.
+ *	This is an internal routine used by mips_emul_fp only.
  *
  * Results:
  *	t0	contains the sign
@@ -4009,7 +4009,7 @@
  * set_fd_s --
  *
  *	Write (single precision) the FD register (bits 10-6).
- *	This is an internal routine used by MachEmulateFP only.
+ *	This is an internal routine used by mips_emul_fp only.
  *
  * Arguments:
  *	a0	contains the FP instruction
@@ -4020,7 +4020,7 @@
  * set_fd_word --
  *
  *	Write (integer) the FD register (bits 10-6).
- *	This is an internal routine used by MachEmulateFP only.
+ *	This is an internal routine used by mips_emul_fp only.
  *
  * Arguments:
  *	a0	contains the FP instruction
@@ -4123,7 +4123,7 @@
  * set_fd_d --
  *
  *	Write (double precision) the FT register (bits 10-6).
- *	This is an internal routine used by MachEmulateFP only.
+ *	This is an internal routine used by mips_emul_fp only.
  *
  * Arguments:
  *	a0	contains the FP instruction
@@ -4552,782 +4552,11 @@
 #endif	/* __mips_o32 */
 END(renorm_ft_d)
 
-#ifdef FPEMUL
-/*
- * Emulate branch delay slot CPU instruction.
- * Enter from BC1x emulation.
- * These instructions are not implemented and causes SIGILL.
- *  jump/branch
- *  COP0
- *  64bit operation
- *  trap/syscall/break
- *
- * Args are same as MachEmulateFP.
- * It should be used to emulate instruction in branch delay slot.
- */
-STATIC_LEAF(bcemul_delay_slot)
-	REG_PROLOGUE
-	REG_S	zero, TF_REG_ZERO(a1)		# ensure zero has value 0
-	REG_EPILOGUE
-
-	srl	t0, a0, 26-PTR_SCALESHIFT
-	andi	t0, t0, 0x3F << PTR_SCALESHIFT
-	PTR_L	t0, bcemul_optbl(t0)
-	j	t0
-
-bcemul_special:
-	sll	t0, a0, PTR_SCALESHIFT
-	andi	t0, t0, 0x3F << PTR_SCALESHIFT
-	PTR_L	t0, bcemul_specialtbl(t0)
-	j	t0
-
-	.rdata
-bcemul_optbl:
-	PTR_WORD bcemul_special			# 0
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 1
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 2
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 3
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 4
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 5
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 6
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 7
-	PTR_WORD bcemul_addi			# 8
-	PTR_WORD bcemul_addiu			# 9
-	PTR_WORD bcemul_slti			# 10
-	PTR_WORD bcemul_sltiu			# 11
-	PTR_WORD bcemul_andi			# 12
-	PTR_WORD bcemul_ori			# 13
-	PTR_WORD bcemul_xori			# 14
-	PTR_WORD bcemul_lui			# 15
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 16
-	PTR_WORD _C_LABEL(MachEmulateFP)	# 17
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 18
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 19 /* COP1X */
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 20
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 21
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 22
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 23
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 24 DADDI
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 25 DADDIU
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 26
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 27
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 28
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 29
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 30
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 31
-	PTR_WORD _C_LABEL(bcemul_lb)		# 32
-	PTR_WORD _C_LABEL(bcemul_lh)		# 33
-	PTR_WORD _C_LABEL(bcemul_lwl)		# 34
-	PTR_WORD _C_LABEL(bcemul_lw)		# 35
-	PTR_WORD _C_LABEL(bcemul_lbu)		# 36
-	PTR_WORD _C_LABEL(bcemul_lhu)		# 37
-	PTR_WORD _C_LABEL(bcemul_lwr)		# 38
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 39
-	PTR_WORD _C_LABEL(bcemul_sb)		# 40
-	PTR_WORD _C_LABEL(bcemul_sh)		# 41
-	PTR_WORD _C_LABEL(bcemul_swl)		# 42
-	PTR_WORD _C_LABEL(bcemul_sw)		# 43
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 44
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 45
-	PTR_WORD _C_LABEL(bcemul_swr)		# 46 SWR
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 47
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 48
-	PTR_WORD _C_LABEL(MachEmulateLWC1)	# 49
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 50
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 51
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 52
-	PTR_WORD _C_LABEL(MachEmulateLDC1)	# 53
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 54
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 55 LD
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 56
-	PTR_WORD _C_LABEL(MachEmulateSWC1)	# 57
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 58
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 59
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 60
-	PTR_WORD _C_LABEL(MachEmulateSDC1)	# 61
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 62
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 63 SD
-
-bcemul_specialtbl:
-	PTR_WORD bcemul_sll		# 0
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 1
-	PTR_WORD bcemul_srl		# 2
-	PTR_WORD bcemul_sra		# 3
-	PTR_WORD bcemul_sllv		# 4
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 5
-	PTR_WORD bcemul_srlv		# 6
-	PTR_WORD bcemul_srav		# 7
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 8
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 9
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 10
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 11
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 12
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 13
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 14
-	PTR_WORD bcemul_sync		# 15
-	PTR_WORD bcemul_mfhi		# 16
-	PTR_WORD bcemul_mthi		# 17
-	PTR_WORD bcemul_mflo		# 18
-	PTR_WORD bcemul_mtlo		# 19
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 20
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 21
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 22
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 23
-	PTR_WORD bcemul_mult		# 24
-	PTR_WORD bcemul_multu		# 25
-	PTR_WORD bcemul_div		# 26
-	PTR_WORD bcemul_divu		# 27
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 28
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 29
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 30
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 31
-	PTR_WORD bcemul_add		# 32
-	PTR_WORD bcemul_addu		# 33
-	PTR_WORD bcemul_sub		# 34
-	PTR_WORD bcemul_subu		# 35
-	PTR_WORD bcemul_and		# 36
-	PTR_WORD bcemul_or		# 37
-	PTR_WORD bcemul_xor		# 38
-	PTR_WORD bcemul_nor		# 39
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 40
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 41
-	PTR_WORD bcemul_slt		# 42
-	PTR_WORD bcemul_sltu		# 43
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 44
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 45
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 46
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 47
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 48
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 49
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 50
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 51
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 52
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 53
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 54
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 55
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 56
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 57
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 58
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 59
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 60
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 61
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 62
-	PTR_WORD _C_LABEL(bcemul_sigill)	# 63
-
-	.text
-
-bcemul_addi:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	sll	t2, a0, 16
-	sra	t2, t2, 16
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_EPILOGUE
-	addu	t0, v0, t2
-
-	/* Overflow check */
-	xor	t2, v0, t2
-	srl	t2, t2, 31
-	bne	t2, zero, addiok
-
-	xor	v0, v0, t0
-	srl	v0, v0, 31
-	beq	v0, zero, addiok
-
-	j	_C_LABEL(bcemul_sigfpe)
-
-addiok:
-	REG_PROLOGUE
-	REG_S	t0, TF_REG_ZERO(t1)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_addiu:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	sll	t2, a0, 16
-	sra	t2, t2, 16
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	addu	v0, v0, t2
-	REG_S	v0, TF_REG_ZERO(t1)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_slti:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	sll	t2, a0, 16
-	sra	t2, t2, 16
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	slt	v0, v0, t2
-	REG_S	v0, TF_REG_ZERO(t1)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_sltiu:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	sll	t2, a0, 16
-	sra	t2, t2, 16
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	sltu	v0, v0, t2
-	REG_S	v0, TF_REG_ZERO(t1)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_andi:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	andi	t2, a0, 0xFFFF
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	and	v0, v0, t2
-	REG_S	v0, TF_REG_ZERO(t1)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_ori:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	andi	t2, a0, 0xFFFF
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	or	v0, v0, t2
-	REG_S	v0, TF_REG_ZERO(t1)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_xori:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	andi	t2, a0, 0xFFFF
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	xor	v0, v0, t2
-	REG_S	v0, TF_REG_ZERO(t1)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_lui:
-	srl	t0, a0, 16-REG_SCALESHIFT	# rt
-	andi	t0, t0, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	sll	v0, a0, 16
-	REG_PROLOGUE
-	REG_S	v0, TF_REG_ZERO(t0)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_sll:
-	srl	t0, a0, 16-REG_SCALESHIFT	# rt
-	srl	t1, a0, 11-REG_SCALESHIFT	# rd
-	srl	t2, a0, 6		# sa
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	andi	t2, t2, 0x001F
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	sllv	v0, v0, t2
-	REG_S	v0, TF_REG_ZERO(t1)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_srl:
-	srl	t0, a0, 16-REG_SCALESHIFT	# rt
-	srl	t1, a0, 11-REG_SCALESHIFT	# rd
-	srl	t2, a0, 6		# sa
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	andi	t2, t2, 0x001F
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	srlv	v0, v0, t2
-	REG_S	v0, TF_REG_ZERO(t1)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_sra:
-	srl	t0, a0, 16-REG_SCALESHIFT	# rt
-	srl	t1, a0, 11-REG_SCALESHIFT	# rd
-	srl	t2, a0, 6		# sa
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	andi	t2, t2, 0x001F
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	srav	v0, v0, t2
-	REG_S	v0, TF_REG_ZERO(t1)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_sllv:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	srl	t2, a0, 11-REG_SCALESHIFT	# rd
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	andi	t2, t2, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	PTR_ADDU t2, a1, t2
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_L	v1, TF_REG_ZERO(t1)
-	sllv	v0, v1, v0
-	REG_S	v0, TF_REG_ZERO(t2)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_srlv:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	srl	t2, a0, 11-REG_SCALESHIFT	# rd
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	andi	t2, t2, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	PTR_ADDU t2, a1, t2
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_L	v1, TF_REG_ZERO(t1)
-	srlv	v0, v1, v0
-	REG_S	v0, TF_REG_ZERO(t2)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_srav:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	srl	t2, a0, 11-REG_SCALESHIFT	# rd
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	andi	t2, t2, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	PTR_ADDU t2, a1, t2
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_L	v1, TF_REG_ZERO(t1)
-	srav	v0, v1, v0
-	REG_S	v0, TF_REG_ZERO(t2)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_sync:
-	b	bcemul_done
-
-bcemul_mfhi:
-	srl	t0, a0, 11-REG_SCALESHIFT	# rd
-	andi	t0, t0, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_MULHI(a1)
-	REG_S	v0, TF_REG_ZERO(t0)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_mthi:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	andi	t0, t0, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_S	v0, TF_REG_MULHI(a1)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_mflo:
-	srl	t0, a0, 11-REG_SCALESHIFT	# rd
-	andi	t0, t0, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_MULLO(a1)
-	REG_S	v0, TF_REG_ZERO(t0)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_mtlo:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	andi	t0, t0, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_S	v0, TF_REG_MULLO(a1)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_mult:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_L	v1, TF_REG_ZERO(t1)
-	REG_EPILOGUE
-	mult	v0, v1
-	mflo	v0
-	mfhi	v1
-	REG_PROLOGUE
-	REG_S	v0, TF_REG_MULLO(a1)
-	REG_S	v1, TF_REG_MULHI(a1)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_multu:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_L	v1, TF_REG_ZERO(t1)
-	REG_EPILOGUE
-	multu	v0, v1
-	mflo	v0
-	mfhi	v1
-	REG_PROLOGUE
-	REG_S	v0, TF_REG_MULLO(a1)
-	REG_S	v1, TF_REG_MULHI(a1)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_div:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_L	v1, TF_REG_ZERO(t1)
-	REG_EPILOGUE
-	div	v0, v1
-	mflo	v0
-	mfhi	v1
-	REG_PROLOGUE
-	REG_S	v0, TF_REG_MULLO(a1)
-	REG_S	v1, TF_REG_MULHI(a1)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_divu:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_L	v1, TF_REG_ZERO(t1)
-	REG_EPILOGUE
-	divu	v0, v1
-	mflo	v0
-	mfhi	v1
-	REG_PROLOGUE
-	REG_S	v0, TF_REG_MULLO(a1)
-	REG_S	v1, TF_REG_MULHI(a1)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_add:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	srl	t2, a0, 11-REG_SCALESHIFT	# rd
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	andi	t2, t2, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	PTR_ADDU t2, a1, t2
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_L	v1, TF_REG_ZERO(t1)
-	REG_EPILOGUE
-	addu	t0, v0, v1
-
-	/* Overflow check */
-	xor	v1, v0, v1
-	srl	v1, v1, 31
-	bne	v1, zero, addok
-
-	xor	v0, v0, t0
-	srl	v0, v0, 31
-	beq	v0, zero, addok
-
-	j	_C_LABEL(bcemul_sigfpe)
-
-addok:
-	REG_PROLOGUE
-	REG_S	t0, TF_REG_ZERO(t2)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_addu:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	srl	t2, a0, 11-REG_SCALESHIFT	# rd
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	andi	t2, t2, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	PTR_ADDU t2, a1, t2
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_L	v1, TF_REG_ZERO(t1)
-	addu	v0, v0, v1
-	REG_S	v0, TF_REG_ZERO(t2)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_sub:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	srl	t2, a0, 11-REG_SCALESHIFT	# rd
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	andi	t2, t2, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	PTR_ADDU t2, a1, t2
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_L	v1, TF_REG_ZERO(t1)
-	REG_EPILOGUE
-	subu	t0, v0, v1
-
-	/* Overflow check */
-	xor	v1, v0, v1
-	srl	v1, v1, 31
-	beq	v1, zero, subok
-
-	xor	v0, v0, t0
-	srl	v0, v0, 31
-	beq	v0, zero, subok
-
-	j	_C_LABEL(bcemul_sigfpe)
-
-subok:
-	REG_PROLOGUE
-	REG_S	t0, TF_REG_ZERO(t2)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_subu:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	srl	t2, a0, 11-REG_SCALESHIFT	# rd
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	andi	t2, t2, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	PTR_ADDU t2, a1, t2
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_L	v1, TF_REG_ZERO(t1)
-	subu	v0, v0, v1
-	REG_S	v0, TF_REG_ZERO(t2)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_and:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	srl	t2, a0, 11-REG_SCALESHIFT	# rd
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	andi	t2, t2, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	PTR_ADDU t2, a1, t2
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_L	v1, TF_REG_ZERO(t1)
-	and	v0, v0, v1
-	REG_S	v0, TF_REG_ZERO(t2)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_or:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	srl	t2, a0, 11-REG_SCALESHIFT	# rd
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	andi	t2, t2, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	PTR_ADDU t2, a1, t2
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_L	v1, TF_REG_ZERO(t1)
-	or	v0, v0, v1
-	REG_S	v0, TF_REG_ZERO(t2)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_xor:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	srl	t2, a0, 11-REG_SCALESHIFT	# rd
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	andi	t2, t2, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	PTR_ADDU t2, a1, t2
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_L	v1, TF_REG_ZERO(t1)
-	xor	v0, v0, v1
-	REG_S	v0, TF_REG_ZERO(t2)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_nor:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	srl	t2, a0, 11-REG_SCALESHIFT	# rd
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	andi	t2, t2, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	PTR_ADDU t2, a1, t2
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_L	v1, TF_REG_ZERO(t1)
-	nor	v0, v0, v1
-	REG_S	v0, TF_REG_ZERO(t2)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_slt:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	srl	t2, a0, 11-REG_SCALESHIFT	# rd
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	andi	t2, t2, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	PTR_ADDU t2, a1, t2
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_L	v1, TF_REG_ZERO(t1)
-	slt	v0, v0, v1
-	REG_S	v0, TF_REG_ZERO(t2)
-	REG_EPILOGUE
-	b	bcemul_done
-
-bcemul_sltu:
-	srl	t0, a0, 21-REG_SCALESHIFT	# rs
-	srl	t1, a0, 16-REG_SCALESHIFT	# rt
-	srl	t2, a0, 11-REG_SCALESHIFT	# rd
-	andi	t0, t0, REG_REGMASK
-	andi	t1, t1, REG_REGMASK
-	andi	t2, t2, REG_REGMASK
-	PTR_ADDU t0, a1, t0
-	PTR_ADDU t1, a1, t1
-	PTR_ADDU t2, a1, t2
-	REG_PROLOGUE
-	REG_L	v0, TF_REG_ZERO(t0)
-	REG_L	v1, TF_REG_ZERO(t1)
-	sltu	v0, v0, v1
-	REG_S	v0, TF_REG_ZERO(t2)
-	REG_EPILOGUE
-#	b	bcemul_done		# fall through to bcemul_done
-
-bcemul_done:
-/*
- * Succeeded to emulate instruction with no error
- * so compute the next PC.
- */
-	PTR_SUBU sp, CALLFRAME_SIZ
-	REG_S	ra, CALLFRAME_RA(sp)
-	REG_S	a1, CALLFRAME_FRAME(sp)
-
-	/* Fetch previous branch instruction */
-	REG_PROLOGUE
-	REG_L	a0, TF_REG_EPC(a1)
-	REG_EPILOGUE
-	jal	_C_LABEL(fuiword)
-
-	REG_L	a1, CALLFRAME_FRAME(sp)
-
-	/* Calculate branch destination */
-	sll	t0, v0, 16
-	sra	t0, t0, 16-2
-	REG_PROLOGUE
-	REG_L	t1, TF_REG_EPC(a1)
-	PTR_ADDU t0, t0, 4
-	PTR_ADDU t1, t0
-	REG_S	t1, TF_REG_EPC(a1)
-	REG_EPILOGUE
-
-	REG_L	ra, CALLFRAME_RA(sp)
-	PTR_ADDU sp, CALLFRAME_SIZ
-	j	ra
-
-END(bcemul_delay_slot)
-
-#endif
-
 /*
  * Send SIGILL, SIGFPE.
- * Args are same as MachEmulateFP.
+ * Args are same as mips_emul_fp.
  */
 STATIC_LEAF(fpemul_sigill)
-#ifdef FPEMUL
-STATIC_XLEAF(bcemul_sigill)
-#endif
 	li	t0, 0xFFFFFF00
 	and	a2, a2, t0
 	ori	a2, a2, T_RES_INST << MIPS_CR_EXC_CODE_SHIFT
@@ -5356,7 +4585,7 @@
 END(fpemul_sigfpe)
 
 #ifdef FPEMUL
-STATIC_LEAF(bcemul_sigfpe)
+STATIC_LEAF(mips_emul_sigfpe)
 	li	t0, 0xFFFFFF00
 	and	a2, a2, t0
 	ori	a2, a2, T_OVFLOW << MIPS_CR_EXC_CODE_SHIFT
@@ -5368,5 +4597,5 @@
 	move	a0, MIPS_CURLWP			# get current process
 	li	a1, SIGFPE
 	j	_C_LABEL(fpemul_trapsignal)
-END(bcemul_sigfpe)
+END(mips_emul_sigfpe)
 #endif

Reply via email to