101 lines
2.1 KiB
ArmAsm
101 lines
2.1 KiB
ArmAsm
#include "soc/rtc_cntl_reg.h"
|
|
#include "soc/rtc_io_reg.h"
|
|
#include "soc/soc_ulp.h"
|
|
|
|
.bss
|
|
|
|
.global jumps_pass
|
|
jumps_pass:
|
|
.long 0
|
|
|
|
.global jumps_fail
|
|
jumps_fail:
|
|
.long 0
|
|
|
|
.text
|
|
.global test_jumps
|
|
test_jumps:
|
|
|
|
/* tests for LT (less than) condition */
|
|
stage_rst /* cnt = 0 */
|
|
jumps test_fail, 0, LT /* 0 < 0: false, should not jump */
|
|
jumps 1f, 1, LT /* 0 < 1: true, should jump */
|
|
jump test_fail
|
|
1:
|
|
stage_inc 2 /* cnt = 2 */
|
|
jumps 1f, 3, LT /* 2 < 1: true */
|
|
jump test_fail
|
|
1:
|
|
jumps test_fail, 1, LT /* 2 < 1: false */
|
|
jumps test_fail, 2, LT /* 2 < 2: false */
|
|
|
|
/* tests for LE (less or equal) condition */
|
|
stage_rst /* cnt = 0 */
|
|
jumps 1f, 0, LE /* 0 <= 0: true */
|
|
jump test_fail
|
|
1:
|
|
jumps 1f, 1, LE /* 0 <= 1: true */
|
|
jump test_fail
|
|
1:
|
|
stage_inc 2 /* cnt = 2 */
|
|
jumps test_fail, 1, LE /* 2 <= 1: false */
|
|
|
|
/* tests for EQ (equal) condition */
|
|
stage_rst /* cnt = 0 */
|
|
jumps 1f, 0, EQ /* 0 = 0: true */
|
|
jump test_fail
|
|
1:
|
|
jumps test_fail, 1, EQ /* 0 = 1: false */
|
|
|
|
stage_inc 1 /* cnt = 1 */
|
|
jumps test_fail, 0, EQ /* 1 = 0: false */
|
|
jumps test_fail, 2, EQ /* 1 = 2: false */
|
|
jumps 1f, 1, EQ /* 1 = 1: true */
|
|
1:
|
|
|
|
/* tests for GE (greater or equal) condition */
|
|
stage_rst /* cnt = 0 */
|
|
jumps 1f, 0, GE /* 0 >= 0: true */
|
|
jump test_fail
|
|
1:
|
|
jumps test_fail, 1, GE /* 0 >= 1: false */
|
|
|
|
stage_inc 1 /* cnt = 1 */
|
|
jumps 1f, 0, GE /* 1 >= 0: true */
|
|
jump test_fail
|
|
1:
|
|
jumps 1f, 1, GE /* 1 >= 1: true */
|
|
jump test_fail
|
|
1:
|
|
jumps test_fail, 2, GE /* 1 >= 2: false */
|
|
|
|
/* tests for GT (greater than) condition */
|
|
stage_rst /* cnt = 0 */
|
|
jumps test_fail, 0, GT /* 0 > 0: false */
|
|
jumps test_fail, 1, GE /* 0 > 1: false */
|
|
|
|
stage_inc 1 /* cnt = 1 */
|
|
jumps 1f, 0, GT /* 1 > 0: true */
|
|
jump test_fail
|
|
1:
|
|
jumps test_fail, 1, GT /* 1 > 1: false */
|
|
jumps test_fail, 2, GT /* 1 > 2: false */
|
|
|
|
jump test_pass
|
|
|
|
test_fail:
|
|
move r0, jumps_fail
|
|
move r1, 1
|
|
st r1, r0, 0
|
|
jump done
|
|
|
|
test_pass:
|
|
move r0, jumps_pass
|
|
move r1, 1
|
|
st r1, r0, 0
|
|
jump done
|
|
|
|
.global done
|
|
done:
|
|
wake
|
|
halt
|