.Loutsw_bad_alignment:
adr r0, .Loutsw_bad_align_msg
mov r2, lr
b panic
.Loutsw_bad_align_msg:
.asciz "outsw: bad buffer alignment (0x%p, lr=0x%08lX)\n"
.align
.Loutsw_align: tst r1,
bne .Loutsw_bad_alignment
add r1, r1,
ldr r3, [r1,
mov r3, r3, lsr
orr r3, r3, r3, lsl
str r3, [r0]
subs r2, r2,
reteq lr
ENTRY(__raw_writesw)
teq r2,
reteq lr
tst r1,
bne .Loutsw_align
stmfd sp!, {r4, r5, r6, lr}
subs r2, r2,
bmi .Lno_outsw_8
.Loutsw_8_lp: ldmia r1!, {r3, r4, r5, r6}
mov ip, r3, lsl
orr ip, ip, ip, lsr
str ip, [r0]
mov ip, r3, lsr
orr ip, ip, ip, lsl
str ip, [r0]
mov ip, r4, lsl
orr ip, ip, ip, lsr
str ip, [r0]
mov ip, r4, lsr
orr ip, ip, ip, lsl
str ip, [r0]
mov ip, r5, lsl
orr ip, ip, ip, lsr
str ip, [r0]
mov ip, r5, lsr
orr ip, ip, ip, lsl
str ip, [r0]
mov ip, r6, lsl
orr ip, ip, ip, lsr
str ip, [r0]
mov ip, r6, lsr
orr ip, ip, ip, lsl
str ip, [r0]
subs r2, r2,
bpl .Loutsw_8_lp
tst r2,
ldmfdeq sp!, {r4, r5, r6, pc}
.Lno_outsw_8: tst r2,
beq .Lno_outsw_4
ldmia r1!, {r3, r4}
mov ip, r3, lsl
orr ip, ip, ip, lsr
str ip, [r0]
mov ip, r3, lsr
orr ip, ip, ip, lsl
str ip, [r0]
mov ip, r4, lsl
orr ip, ip, ip, lsr
str ip, [r0]
mov ip, r4, lsr
orr ip, ip, ip, lsl
str ip, [r0]
.Lno_outsw_4: tst r2,
beq .Lno_outsw_2
ldr r3, [r1],
mov ip, r3, lsl
orr ip, ip, ip, lsr
str ip, [r0]
mov ip, r3, lsr
orr ip, ip, ip, lsl
str ip, [r0]
.Lno_outsw_2: tst r2,
ldrne r3, [r1]
movne ip, r3, lsl
orrne ip, ip, ip, lsr
strne ip, [r0]
ldmfd sp!, {r4, r5, r6, pc}