Much improved ARM support
This commit is contained in:
parent
b7fb506f00
commit
776053e805
@ -21,6 +21,17 @@
|
|||||||
|
|
||||||
/* arm */
|
/* arm */
|
||||||
/* private */
|
/* private */
|
||||||
|
/* types */
|
||||||
|
/* register ids */
|
||||||
|
#define REG(name, size, id) REG_ ## name ## _id = id,
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
#include "arm.reg"
|
||||||
|
REG_id_count
|
||||||
|
};
|
||||||
|
#undef REG
|
||||||
|
|
||||||
|
|
||||||
/* variables */
|
/* variables */
|
||||||
static ArchDescription _arm_description = { "elf", ARCH_ENDIAN_BIG, 32, 32 };
|
static ArchDescription _arm_description = { "elf", ARCH_ENDIAN_BIG, 32, 32 };
|
||||||
|
|
||||||
|
1362
src/arch/arm.ins
1362
src/arch/arm.ins
File diff suppressed because it is too large
Load Diff
160
test/arm.S
160
test/arm.S
@ -1,25 +1,67 @@
|
|||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
.text
|
.text
|
||||||
adc %r0, %r1, %r2
|
adc %r3, %r4, %r5
|
||||||
adceq %r0, %r1, %r2
|
adceq %r3, %r4, %r5
|
||||||
add %r2, %r1, %r0
|
adc %r3, %r4, $0x0
|
||||||
addeq %r2, %r1, %r0
|
adceq %r3, %r4, $0x1
|
||||||
|
adcs %r3, %r4, %r5
|
||||||
|
adceqs %r3, %r4, %r5
|
||||||
|
adcs %r3, %r4, $0x0
|
||||||
|
adceqs %r3, %r4, $0x1
|
||||||
|
add %r3, %r4, %r5
|
||||||
|
addeq %r3, %r4, %r5
|
||||||
|
add %r3, %r4, $0x0
|
||||||
|
addeq %r3, %r4, $0x1
|
||||||
|
adds %r3, %r4, %r5
|
||||||
|
addeqs %r3, %r4, %r5
|
||||||
|
adds %r3, %r4, $0x0
|
||||||
|
addeqs %r3, %r4, $0x1
|
||||||
and %r3, %r4, %r5
|
and %r3, %r4, %r5
|
||||||
andeq %r3, %r4, %r5
|
andeq %r3, %r4, %r5
|
||||||
|
and %r3, %r4, $0x0
|
||||||
|
andeq %r3, %r4, $0x1
|
||||||
|
ands %r3, %r4, %r5
|
||||||
|
andeqs %r3, %r4, %r5
|
||||||
|
ands %r3, %r4, $0x0
|
||||||
|
andeqs %r3, %r4, $0x1
|
||||||
b $0xa0
|
b $0xa0
|
||||||
beq $0xa0
|
beq $0xa0
|
||||||
|
bic %r3, %r4, %r5
|
||||||
|
biceq %r3, %r4, %r5
|
||||||
|
bic %r3, %r4, $0x0
|
||||||
|
biceq %r3, %r4, $0x1
|
||||||
|
bics %r3, %r4, %r5
|
||||||
|
biceqs %r3, %r4, %r5
|
||||||
|
bics %r3, %r4, $0x0
|
||||||
|
biceqs %r3, %r4, $0x1
|
||||||
bl $0xa0
|
bl $0xa0
|
||||||
bleq $0xa0
|
bleq $0xa0
|
||||||
bx %r0
|
bx %r0
|
||||||
bxeq %r0
|
bxeq %r0
|
||||||
bic %r0, %r0, %r0
|
cmn %r5, %r4
|
||||||
biceq %r2, %r0, %r1
|
cmneq %r5, %r4
|
||||||
cmn %r5, %r4, %r3
|
cmn %r5, $0x1
|
||||||
cmneq %r5, %r4, %r3
|
cmneq %r5, $0x2
|
||||||
cmp %r5, %r4, %r3
|
cmns %r5, %r4
|
||||||
cmpeq %r5, %r4, %r3
|
cmneqs %r5, %r4
|
||||||
eor %r5, %r4, %r3
|
cmns %r5, $0x1
|
||||||
eoreq %r5, %r4, %r3
|
cmneqs %r5, $0x2
|
||||||
|
cmp %r5, %r4
|
||||||
|
cmpeq %r5, %r4
|
||||||
|
cmp %r5, $0x1
|
||||||
|
cmpeq %r5, $0x2
|
||||||
|
cmps %r5, %r4
|
||||||
|
cmpeqs %r5, %r4
|
||||||
|
cmps %r5, $0x1
|
||||||
|
cmpeqs %r5, $0x2
|
||||||
|
eor %r3, %r4, %r5
|
||||||
|
eoreq %r3, %r4, %r5
|
||||||
|
eor %r3, %r4, $0x0
|
||||||
|
eoreq %r3, %r4, $0x1
|
||||||
|
eors %r3, %r4, %r5
|
||||||
|
eoreqs %r3, %r4, %r5
|
||||||
|
eors %r3, %r4, $0x0
|
||||||
|
eoreqs %r3, %r4, $0x1
|
||||||
ldc %r0, %r0, %r0
|
ldc %r0, %r0, %r0
|
||||||
ldceq %r0, %r0, %r0
|
ldceq %r0, %r0, %r0
|
||||||
ldm %r0, %r0, %r0
|
ldm %r0, %r0, %r0
|
||||||
@ -28,34 +70,98 @@
|
|||||||
ldreq %r0, %r0, %r0
|
ldreq %r0, %r0, %r0
|
||||||
mcr %r0, %r0, %r0
|
mcr %r0, %r0, %r0
|
||||||
mcreq %r0, %r0, %r0
|
mcreq %r0, %r0, %r0
|
||||||
mov %r5, %r4, %r3
|
mov %r5, %r4
|
||||||
moveq %r5, %r4, %r3
|
moveq %r5, %r4
|
||||||
|
mov %r5, $0x1
|
||||||
|
moveq %r5, $0x2
|
||||||
|
movs %r5, %r4
|
||||||
|
moveqs %r5, %r4
|
||||||
|
movs %r5, $0x1
|
||||||
|
moveqs %r5, $0x2
|
||||||
mrc %r0, %r0, %r0
|
mrc %r0, %r0, %r0
|
||||||
mrceq %r0, %r0, %r0
|
mrceq %r0, %r0, %r0
|
||||||
mrs %r0, %cpsr
|
mrs %r0, %cpsr
|
||||||
msr %r0, %cpsr
|
mrseq %r0, %cpsr
|
||||||
|
mrs %r0, %spsr
|
||||||
|
mrseq %r0, %spsr
|
||||||
|
msr %cpsr, %r0
|
||||||
|
msreq %cpsr, %r1
|
||||||
|
msr %spsr, %r0
|
||||||
|
msreq %spsr, %r1
|
||||||
mul %r0, %r1, %r2
|
mul %r0, %r1, %r2
|
||||||
muls %r0, %r1, %r2
|
muls %r0, %r1, %r2
|
||||||
mvn %r5, %r4, %r3
|
mvn %r5, %r4
|
||||||
mvneq %r5, %r4, %r3
|
mvneq %r5, %r4
|
||||||
|
mvn %r5, $0x1
|
||||||
|
mvneq %r5, $0x2
|
||||||
|
mvns %r5, %r4
|
||||||
|
mvneqs %r5, %r4
|
||||||
|
mvns %r5, $0x1
|
||||||
|
mvneqs %r5, $0x2
|
||||||
nop
|
nop
|
||||||
orr %r5, %r4, %r3
|
orr %r3, %r4, %r5
|
||||||
orreq %r5, %r4, %r3
|
orreq %r3, %r4, %r5
|
||||||
rsb %r5, %r4, %r3
|
orr %r3, %r4, $0x0
|
||||||
rsbeq %r5, %r4, %r3
|
orreq %r3, %r4, $0x1
|
||||||
rsc %r5, %r4, %r3
|
orrs %r3, %r4, %r5
|
||||||
rsceq %r5, %r4, %r3
|
orreqs %r3, %r4, %r5
|
||||||
sbc %r5, %r4, %r3
|
orrs %r3, %r4, $0x0
|
||||||
sbceq %r5, %r4, %r3
|
orreqs %r3, %r4, $0x1
|
||||||
|
rsb %r3, %r4, %r5
|
||||||
|
rsbeq %r3, %r4, %r5
|
||||||
|
rsb %r3, %r4, $0x0
|
||||||
|
rsbeq %r3, %r4, $0x1
|
||||||
|
rsbs %r3, %r4, %r5
|
||||||
|
rsbeqs %r3, %r4, %r5
|
||||||
|
rsbs %r3, %r4, $0x0
|
||||||
|
rsbeqs %r3, %r4, $0x1
|
||||||
|
rsc %r3, %r4, %r5
|
||||||
|
rsceq %r3, %r4, %r5
|
||||||
|
rsc %r3, %r4, $0x0
|
||||||
|
rsceq %r3, %r4, $0x1
|
||||||
|
rscs %r3, %r4, %r5
|
||||||
|
rsceqs %r3, %r4, %r5
|
||||||
|
rscs %r3, %r4, $0x0
|
||||||
|
rsceqs %r3, %r4, $0x1
|
||||||
|
sbc %r3, %r4, %r5
|
||||||
|
sbceq %r3, %r4, %r5
|
||||||
|
sbc %r3, %r4, $0x0
|
||||||
|
sbceq %r3, %r4, $0x1
|
||||||
|
sbcs %r3, %r4, %r5
|
||||||
|
sbceqs %r3, %r4, %r5
|
||||||
|
sbcs %r3, %r4, $0x0
|
||||||
|
sbceqs %r3, %r4, $0x1
|
||||||
stc %r0, %r0, %r0
|
stc %r0, %r0, %r0
|
||||||
stceq %r0, %r0, %r0
|
stceq %r0, %r0, %r0
|
||||||
stm %r0, %r0, %r0
|
stm %r0, %r0, %r0
|
||||||
stmeq %r0, %r0, %r0
|
stmeq %r0, %r0, %r0
|
||||||
str %r0, %r0, %r0
|
str %r0, %r0, %r0
|
||||||
streq %r0, %r0, %r0
|
streq %r0, %r0, %r0
|
||||||
sub %r5, %r4, %r3
|
sub %r3, %r4, %r5
|
||||||
subeq %r5, %r4, %r3
|
subeq %r3, %r4, %r5
|
||||||
|
sub %r3, %r4, $0x0
|
||||||
|
subeq %r3, %r4, $0x1
|
||||||
|
subs %r3, %r4, %r5
|
||||||
|
subeqs %r3, %r4, %r5
|
||||||
|
subs %r3, %r4, $0x0
|
||||||
|
subeqs %r3, %r4, $0x1
|
||||||
swi $0x0
|
swi $0x0
|
||||||
swine $0x0
|
swine $0x0
|
||||||
swp %r5, %r4, %r3
|
swp %r5, %r4, %r3
|
||||||
swpeq %r5, %r4, %r3
|
swpeq %r5, %r4, %r3
|
||||||
|
teq %r5, %r4
|
||||||
|
teqeq %r5, %r4
|
||||||
|
teq %r5, $0x1
|
||||||
|
teqeq %r5, $0x2
|
||||||
|
teqs %r5, %r4
|
||||||
|
teqeqs %r5, %r4
|
||||||
|
teqs %r5, $0x1
|
||||||
|
teqeqs %r5, $0x2
|
||||||
|
tst %r5, %r4
|
||||||
|
tsteq %r5, %r4
|
||||||
|
tst %r5, $0x1
|
||||||
|
tsteq %r5, $0x2
|
||||||
|
tsts %r5, %r4
|
||||||
|
tsteqs %r5, %r4
|
||||||
|
tsts %r5, $0x1
|
||||||
|
tsteqs %r5, $0x2
|
||||||
|
Loading…
Reference in New Issue
Block a user