Search
lxdream.org :: lxdream/test/sh4/addc.s
lxdream 0.9.1
released Jun 29
Download Now
filename test/sh4/addc.s
changeset 231:a9e61a96a885
prev226:0eeeb25447d3
author nkeynes
date Fri Feb 08 00:06:56 2008 +0000 (16 years ago)
permissions -rw-r--r--
last change Fix LDS/STS to FPUL/FPSCR to check the FPU disabled bit. Fixes
the linux 2.4.0-test8 kernel boot
(this wasn't exactly very well documented in the original manual)
view annotate diff log raw
     1 .section .text
     2 .include "sh4/inc.s"
     4 .global _test_addc
     5 _test_addc:
     6 	start_test
     8 test_addc_1:	! test adding 0+0 = 0
     9 	clc
    10 	add #1, r12
    11 	xor r0,r0
    12 	xor r1,r1
    13 	xor r2,r2
    14 	addc r0,r1
    15 	stc sr, r4
    16 	cmp/eq r1, r2
    17 	bt test_addc_1_b
    18 	fail test_addc_str_k
    19 	bra test_addc_2
    20 	nop
    21 test_addc_1_b:
    22 	ldc r4, sr
    23 	assert_t_clear test_addc_str_k
    25 test_addc_2:	! test 0+ constant 1 = 1
    26 	add #1, r12
    27 	clc
    28 	xor r0, r0
    29 	xor r1, r1
    30 	add #1, r0
    31 	addc r0, r1
    32 	stc sr, r4
    33 	mov.l test_addc_2_result, r2
    34 	cmp/eq r1, r2
    35 	bt test_addc_2_b
    36 	fail test_addc_str_k
    37 	bra test_addc_3
    38 	nop
    39 test_addc_2_b:
    40 	ldc r4, sr
    41 	assert_t_clear test_addc_str_k
    42 	bra test_addc_3
    43 	nop
    45 	.align 4
    46 test_addc_2_result:
    47 	.long 0x00000001
    49 test_addc_3:	! test 0 + constant -1 = -1
    50 	add #1, r12
    51 	clc
    52 	xor r0, r0
    53 	xor r1, r1
    54 	add #-1, r0
    55 	addc r0, r1
    56 	mov.l test_addc_3_result, r2
    57 	stc sr, r3
    58 	cmp/eq r1, r2
    59 	bt test_addc_3_b
    60 	fail test_addc_str_k
    61 	bra test_addc_4
    62 	nop
    63 test_addc_3_b:	
    64 	ldc r3, sr
    65 	assert_t_clear test_addc_str_k
    66 	bra test_addc_4
    67 	nop
    69 	.align 4
    70 test_addc_3_result:
    71 	.long 0xFFFFFFFF
    73 test_addc_4:	! test a+b = c w/ carry set
    74 	add #1, r12
    75 	clc
    76 	mov.l test_addc_4_op1, r4
    77 	mov.l test_addc_4_op2, r5
    78 	mov.l test_addc_4_result, r0
    79 	addc r4, r5
    80 	stc sr, r1
    81 	cmp/eq r5, r0
    82 	bt test_addc_4_b
    83 	fail test_addc_str_k
    84 	bra test_addc_5
    85 	nop
    86 test_addc_4_b:
    87 	ldc r1, sr
    88 	assert_t_set test_addc_str_k
    89 	bra test_addc_5
    90 	nop
    92 	.align 4
    93 test_addc_4_op1:
    94 	.long 0x98765432
    95 test_addc_4_op2:
    96 	.long 0xA1234567
    97 test_addc_4_result:
    98 	.long 0x39999999
   100 test_addc_5:	! test carry used and cleared
   101 	add #1, r12
   102 	mov.l test_addc_5_op1, r4
   103 	mov.l test_addc_5_op2, r5
   104 	stc sr, r6
   105 	xor r0,r0
   106 	add #1, r0
   107 	or r0,r6
   108 	ldc r6, sr
   109 	addc r5,r4
   110 	stc sr, r1
   111 	mov.l test_addc_5_result, r7
   112 	cmp/eq r7, r4
   113 	bt test_addc_5_b
   114 	fail test_addc_str_k
   115 	bra test_addc_6
   116 	nop
   117 test_addc_5_b:
   118 	ldc r1, sr
   119 	assert_t_clear test_addc_str_k
   120 	bra test_addc_6
   121 	nop
   123 test_addc_5_op1:
   124 	.long 0x11111111
   125 test_addc_5_op2:	
   126 	.long 0x1000FFFF
   127 test_addc_5_result:	
   128 	.long 0x21121111
   130 test_addc_6: ! test carry set on full rollover (ie n + 0xFFFFFFFF + carry )
   131 	add #1, r12
   132 	setc
   133 	mov.l test_addc_6_op1, r5
   134 	mov.l test_addc_6_op2, r6
   135 	addc r5, r6
   136 	stc sr, r1
   137 	cmp/eq r5, r6
   138 	bt test_addc_6_b
   139 	fail test_addc_str_k
   140 	bra test_addc_7
   141 	nop
   142 test_addc_6_b:
   143 	ldc r1, sr
   144 	assert_t_set test_addc_str_k
   145 	bra test_addc_7	
   146 	nop
   148 test_addc_6_op1:
   149 	.long 0x12346789
   150 test_addc_6_op2:
   151 	.long 0xFFFFFFFF
   154 test_addc_7:
   155 	add #1, r12
   156 	clc
   157 	mov.l test_addc_7_op1, r5
   158 	mov.l test_addc_7_op2, r6
   159 	addc r5, r6
   160 	stc sr, r1
   161 	mov.l test_addc_7_result, r2
   162 	cmp/eq r2, r6
   163 	bt test_addc_7_b
   164 	fail test_addc_str_k
   165 	bra test_addc_8
   166 	nop
   167 test_addc_7_b:
   168 	ldc r1, sr
   169 	assert_t_set test_addc_str_k
   170 	bra test_addc_8	
   171 	nop
   173 test_addc_7_op1:
   174 	.long 0x98765432
   175 test_addc_7_op2:
   176 	.long 0xFFFFFFFF
   177 test_addc_7_result:	
   178 	.long 0x98765431	
   180 test_addc_8:
   181 	add #1, r12
   182 	setc
   183 	xor r0,r0
   184 	addc r0, r0
   185 	stc sr, r3
   186 	mov.l test_addc_8_result, r1
   187 	cmp/eq r0, r1
   188 	bt test_addc_8_b
   189 	fail test_addc_str_k
   190 	bra test_addc_9
   191 	nop
   192 test_addc_8_b:
   193 	ldc r3, sr
   194 	assert_t_clear test_addc_str_k
   195 	bra test_addc_9
   196 	nop
   198 test_addc_8_result:
   199 	.long 0x00000001
   201 test_addc_9:	
   202 test_addc_end:
   203 	end_test test_addc_str_k
   205 test_addc_str:
   206 	.string "ADDC"
   208 .align 4	
   209 test_addc_str_k:	
   210 	.long test_addc_str
.