ack/mach/sparc/libem/csb.s

41 lines
439 B
ArmAsm
Raw Normal View History

1991-09-20 16:05:17 +00:00
.global csb
ECASE=20
csb:
! case descriptor in %o0
! index in %o1
ld [%o0], %o2 ! default jump address
ld [%o0+4], %o3 ! # entries
inc 8, %o0
tst %o3
be 3f
nop
dec %o3
set 0xffff, %o4
and %o3, %o4, %o5
sll %o5, 3, %o3
1:
ld [%o0+%o3], %o4
cmp %o4, %o1
be 2f
nop
deccc 8, %o3
bge 1b
nop
b 3f
nop
2:
inc 4, %o3
ld [%o0+%o3], %o2
3:
tst %o2
be 4f
nop
jmp %o2
nop
4:
set ECASE, %o0
set trp, %g1
jmp %g1
nop