nta.s 4.15 KB
/************************************************************************
  This RSP program implements the Nair, Thatte, and Abraham test
  procedure for DMEM stuck-at and coupling faults.
 ************************************************************************/

	.base 0x04001000

	nor	$31, $0,  $0

	ori	$20, $0,  0x001F
	ori	$29, $0,  0x0FFC

	ori	$30, $0,  0
	or	$1,  $0,  $0
StepR:	sw	$0,  0 ($1)
	beq	$1,  $29, StepR
	addi	$1,  $1,  0x0004

	ori	$30, $0,  1
	or	$1,  $0,  $0
Step1:	ori	$4,  $0,  1
  Step1a:
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	beq	$3,  $4,  Fail
	or	$2,  $2,  $4
	sw	$2,  0 ($1)
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	bne	$3,  $4,  Fail
	sll	$4,  $4,  1
	bne	$4,  $0,  Step1a
	nop
	bne	$1,  $29, Step1
	addi	$1,  $1,  0x0004
	ori	$1,  $0,  0x0FFC
  Step1b:
	lw	$2,  0 ($1)
	bne	$2,  $31, Fail
	nop
	bne	$1,  $0,  Step1b
	addi	$1,  $1,  0xFFFC
	
	ori	$30, $0,  2
	or	$1,  $0,  $0
Step2:	ori	$4,  $0,  1
  Step2a:
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	bne	$3,  $4,  Fail
	xor	$2,  $2,  $4
	sw	$2,  0 ($1)
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	beq	$3,  $4,  Fail
	sll	$4,  $4,  1
	bne	$4,  $0,  Step2a
	nop
	bne	$1,  $29, Step2
	addi	$1,  $1,  0x0004
	ori	$1,  $0,  0x0FFC
  Step2b:
	lw	$2,  0 ($1)
	bne	$2,  $0,  Fail
	nop
	bne	$1,  $0,  Step2b
	addi	$1,  $1,  0xFFFC
	
	ori	$30, $0,  3
	or	$1,  $29, $0
Step3:	lui	$4,  0x8000
  Step3a:
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	beq	$3,  $4,  Fail
	or	$2,  $2,  $4
	sw	$2,  0 ($1)
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	bne	$3,  $4,  Fail
	srl	$4,  $4,  1
	bne	$4,  $0,  Step3a
	nop
	bne	$1,  $0,  Step3
	addi	$1,  $1,  0xFFFC
	or	$1,  $0,  $0
  Step3b:
	lw	$2,  0 ($1)
	bne	$2,  $31, Fail
	nop
	bne	$1,  $29, Step3b
	addi	$1,  $1,  0x0004
	
	ori	$30, $0,  4
	or	$1,  $29, $0
Step4:	lui	$4,  0x8000
  Step4a:
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	bne	$3,  $4,  Fail
	xor	$2,  $2,  $4
	sw	$2,  0 ($1)
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	beq	$3,  $4,  Fail
	srl	$4,  $4,  1
	bne	$4,  $0,  Step4a
	nop
	bne	$1,  $0,  Step4
	addi	$1,  $1,  0xFFFC
	or	$1,  $0,  $0
  Step4b:
	lw	$2,  0 ($1)
	bne	$2,  $0,  Fail
	nop
	bne	$1,  $29, Step4b
	addi	$1,  $1,  0x0004
	
	ori	$30, $0,  5
	or	$1,  $0,  $0
Step5:	ori	$4,  $0,  1
  Step5a:
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	beq	$3,  $4,  Fail
	or	$2,  $2,  $4
	sw	$2,  0 ($1)
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	bne	$3,  $4,  Fail
	xor	$2,  $2,  $4
	sw	$2,  0 ($1)
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	beq	$3,  $4,  Fail
	nop
	sll	$4,  $4,  1
	bne	$4,  $0,  Step5a
	nop
	bne	$1,  $29, Step5
	addi	$1,  $1,  0x0004
	ori	$1,  $0,  0x0FFC
  Step5b:
	lw	$2,  0 ($1)
	bne	$2,  $0,  Fail
	nop
	bne	$1,  $0,  Step5b
	addi	$1,  $1,  0xFFFC

	ori	$30, $0,  6
	or	$1,  $29, $0
Step6:	lui	$4,  0x8000
  Step6a:
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	beq	$3,  $4,  Fail
	or	$2,  $2,  $4
	sw	$2,  0 ($1)
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	bne	$3,  $4,  Fail
	xor	$2,  $2,  $4
	sw	$2,  0 ($1)
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	beq	$3,  $4,  Fail
	nop
	srl	$4,  $4,  1
	bne	$4,  $0,  Step6a
	nop
	bne	$1,  $0,  Step6
	addi	$1,  $1,  0xFFFC
	or	$1,  $0,  $0
  Step6b:
	lw	$2,  0 ($1)
	bne	$2,  $0,  Fail
	nop
	bne	$1,  $29, Step6b
	addi	$1,  $1,  0x0004
	
	or	$1,  $0,  $0
StepS:	sw	$31, 0 ($1)
	beq	$1,  $29, StepS
	addi	$1,  $1,  0x0004

	ori	$30, $0,  7
	or	$1,  $0,  $0
Step7:	ori	$4,  $0,  1
  Step7a:
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	bne	$3,  $4,  Fail
	xor	$2,  $2,  $4
	sw	$2,  0 ($1)
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	beq	$3,  $4,  Fail
	or	$2,  $2,  $4
	sw	$2,  0 ($1)
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	bne	$3,  $4,  Fail
	nop
	sll	$4,  $4,  1
	bne	$4,  $0,  Step7a
	nop
	bne	$1,  $29, Step7
	addi	$1,  $1,  0x0004
	ori	$1,  $0,  0x0FFC
  Step7b:
	lw	$2,  0 ($1)
	bne	$2,  $31,  Fail
	nop
	bne	$1,  $0,  Step7b
	addi	$1,  $1,  0xFFFC

	ori	$30, $0,  8
	or	$1,  $29, $0
Step8:	lui	$4,  0x8000
  Step8a:
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	bne	$3,  $4,  Fail
	xor	$2,  $2,  $4
	sw	$2,  0 ($1)
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	beq	$3,  $4,  Fail
	or	$2,  $2,  $4
	sw	$2,  0 ($1)
	lw	$2,  0 ($1)
	and	$3,  $2,  $4
	bne	$3,  $4,  Fail
	nop
	srl	$4,  $4,  1
	bne	$4,  $0,  Step8a
	nop
	bne	$1,  $0,  Step8
	addi	$1,  $1,  0xFFFC
	or	$1,  $0,  $0
  Step8b:
	lw	$2,  0 ($1)
	bne	$2,  $31, Fail
	nop
	bne	$1,  $29, Step8b
	addi	$1,  $1,  0x0004
	
	ori	$1,  $0,  0xFEED
Fail:	break