ack/tests/plat/core/sar_e.e

126 lines
1.5 KiB
Plaintext
Raw Normal View History

#
mes 2, EM_WSIZE, EM_PSIZE
/*
* Does basic testing of sar. Unfortunately, sar throws ERANGE on
* error, which we can't catch (or at least, the platforms I've looked at
* don't allow it to be caught, those platforms which actually throw it on
* error). So we just test the non-throwing cases, not the negative ones.
*/
#define ARRAY_SIZE 3*EM_WSIZE
array
bss ARRAY_SIZE, 0, 0
descriptor
con -1 ; lower bound
con 2 ; range, *inclusive*
con EM_WSIZE ; size of element
element0
con 1
con 0
con 0
element1
con 0
con 1
con 0
element2
con 0
con 0
con 1
exp $_m_a_i_n
pro $_m_a_i_n, 0
/* Write element -1 */
cal $clear_array
loc 1
lae array
loc -1
lae descriptor
sar EM_WSIZE
lae array
loi ARRAY_SIZE
lae element0
loi ARRAY_SIZE
loc ARRAY_SIZE
cms
zeq *1
loc __LINE__
cal $fail
ass EM_WSIZE
1
/* Write element 0 */
cal $clear_array
loc 1
lae array
loc 0
lae descriptor
sar EM_WSIZE
lae array
loi ARRAY_SIZE
lae element1
loi ARRAY_SIZE
loc ARRAY_SIZE
cms
zeq *2
loc __LINE__
cal $fail
ass EM_WSIZE
2
/* Write element 1 */
cal $clear_array
loc 1
lae array
loc 1
lae descriptor
sar EM_WSIZE
lae array
loi ARRAY_SIZE
lae element2
loi ARRAY_SIZE
loc ARRAY_SIZE
cms
zeq *3
loc __LINE__
cal $fail
ass EM_WSIZE
3
cal $finished
end
exp $clear_array
pro $clear_array, 0
loc 0
lae array + EM_WSIZE*0
sti EM_WSIZE
loc 0
lae array + EM_WSIZE*1
sti EM_WSIZE
loc 0
lae array + EM_WSIZE*2
sti EM_WSIZE
ret 0
end