Improving ARM support
This commit is contained in:
parent
d655dbda03
commit
b67b0d0eff
@ -75,6 +75,12 @@
|
|||||||
#define OPBX(cond) (cond | (0x12fff1 << 4))
|
#define OPBX(cond) (cond | (0x12fff1 << 4))
|
||||||
#define OPBXF (32 << AOD_SIZE)
|
#define OPBXF (32 << AOD_SIZE)
|
||||||
|
|
||||||
|
/* coprocessor data transfers */
|
||||||
|
#define OPCDTL(cond) (cond | (0x6 << 25) | (0x1 << 20))
|
||||||
|
#define OPCDTLF (32 << AOD_SIZE)
|
||||||
|
#define OPCDTS(cond) (cond | (0x6 << 25))
|
||||||
|
#define OPCDTSF (32 << AOD_SIZE)
|
||||||
|
|
||||||
/* data processing */
|
/* data processing */
|
||||||
#define OPDATA(cond, op)(cond | op)
|
#define OPDATA(cond, op)(cond | op)
|
||||||
#define OPDATAF (32 << AOD_SIZE)
|
#define OPDATAF (32 << AOD_SIZE)
|
||||||
@ -279,9 +285,24 @@
|
|||||||
{ "eorgt", OPDATA(gt,eor), OPDATAF,OP_R, OP_R, OP_R },
|
{ "eorgt", OPDATA(gt,eor), OPDATAF,OP_R, OP_R, OP_R },
|
||||||
{ "eorle", OPDATA(le,eor), OPDATAF,OP_R, OP_R, OP_R },
|
{ "eorle", OPDATA(le,eor), OPDATAF,OP_R, OP_R, OP_R },
|
||||||
{ "eoral", OPDATA(al,eor), OPDATAF,OP_R, OP_R, OP_R },
|
{ "eoral", OPDATA(al,eor), OPDATAF,OP_R, OP_R, OP_R },
|
||||||
#if 1 /* FIXME implement correctly */
|
/* ldc */
|
||||||
{ "ldc", 0x00000000, OPNOP, AOT_NONE, AOT_NONE, AOT_NONE },
|
{ "ldc", OPCDTL(al), OPCDTLF,OP_R, OP_R, OP_R },
|
||||||
#endif
|
{ "ldceq", OPCDTL(eq), OPCDTLF,OP_R, OP_R, OP_R },
|
||||||
|
{ "ldcne", OPCDTL(ne), OPCDTLF,OP_R, OP_R, OP_R },
|
||||||
|
{ "ldccs", OPCDTL(cs), OPCDTLF,OP_R, OP_R, OP_R },
|
||||||
|
{ "ldccc", OPCDTL(cc), OPCDTLF,OP_R, OP_R, OP_R },
|
||||||
|
{ "ldcmi", OPCDTL(mi), OPCDTLF,OP_R, OP_R, OP_R },
|
||||||
|
{ "ldcpl", OPCDTL(pl), OPCDTLF,OP_R, OP_R, OP_R },
|
||||||
|
{ "ldcvs", OPCDTL(vs), OPCDTLF,OP_R, OP_R, OP_R },
|
||||||
|
{ "ldcvc", OPCDTL(vc), OPCDTLF,OP_R, OP_R, OP_R },
|
||||||
|
{ "ldchi", OPCDTL(hi), OPCDTLF,OP_R, OP_R, OP_R },
|
||||||
|
{ "ldcls", OPCDTL(ls), OPCDTLF,OP_R, OP_R, OP_R },
|
||||||
|
{ "ldcge", OPCDTL(ge), OPCDTLF,OP_R, OP_R, OP_R },
|
||||||
|
{ "ldclt", OPCDTL(lt), OPCDTLF,OP_R, OP_R, OP_R },
|
||||||
|
{ "ldcgt", OPCDTL(gt), OPCDTLF,OP_R, OP_R, OP_R },
|
||||||
|
{ "ldcle", OPCDTL(le), OPCDTLF,OP_R, OP_R, OP_R },
|
||||||
|
{ "ldcal", OPCDTL(al), OPCDTLF,OP_R, OP_R, OP_R },
|
||||||
|
/* ldm */
|
||||||
{ "ldm", OPBDTL(al), OPBDTLF,OP_R, OP_R, OP_R },
|
{ "ldm", OPBDTL(al), OPBDTLF,OP_R, OP_R, OP_R },
|
||||||
{ "ldmeq", OPBDTL(eq), OPBDTLF,OP_R, OP_R, OP_R },
|
{ "ldmeq", OPBDTL(eq), OPBDTLF,OP_R, OP_R, OP_R },
|
||||||
{ "ldmne", OPBDTL(ne), OPBDTLF,OP_R, OP_R, OP_R },
|
{ "ldmne", OPBDTL(ne), OPBDTLF,OP_R, OP_R, OP_R },
|
||||||
@ -446,9 +467,23 @@
|
|||||||
{ "sbcgt", OPDATA(gt,sbc), OPDATAF,OP_R, OP_R, OP_R },
|
{ "sbcgt", OPDATA(gt,sbc), OPDATAF,OP_R, OP_R, OP_R },
|
||||||
{ "sbcle", OPDATA(le,sbc), OPDATAF,OP_R, OP_R, OP_R },
|
{ "sbcle", OPDATA(le,sbc), OPDATAF,OP_R, OP_R, OP_R },
|
||||||
{ "sbcal", OPDATA(al,sbc), OPDATAF,OP_R, OP_R, OP_R },
|
{ "sbcal", OPDATA(al,sbc), OPDATAF,OP_R, OP_R, OP_R },
|
||||||
#if 1 /* FIXME implement correctly */
|
/* stc */
|
||||||
{ "stc", 0x00000000, OPNOP, AOT_NONE, AOT_NONE, AOT_NONE },
|
{ "stc", OPCDTS(al), OPCDTSF,OP_R, OP_R, OP_R },
|
||||||
#endif
|
{ "stceq", OPCDTS(eq), OPCDTSF,OP_R, OP_R, OP_R },
|
||||||
|
{ "stcne", OPCDTS(ne), OPCDTSF,OP_R, OP_R, OP_R },
|
||||||
|
{ "stccs", OPCDTS(cs), OPCDTSF,OP_R, OP_R, OP_R },
|
||||||
|
{ "stccc", OPCDTS(cc), OPCDTSF,OP_R, OP_R, OP_R },
|
||||||
|
{ "stcmi", OPCDTS(mi), OPCDTSF,OP_R, OP_R, OP_R },
|
||||||
|
{ "stcpl", OPCDTS(pl), OPCDTSF,OP_R, OP_R, OP_R },
|
||||||
|
{ "stcvs", OPCDTS(vs), OPCDTSF,OP_R, OP_R, OP_R },
|
||||||
|
{ "stcvc", OPCDTS(vc), OPCDTSF,OP_R, OP_R, OP_R },
|
||||||
|
{ "stchi", OPCDTS(hi), OPCDTSF,OP_R, OP_R, OP_R },
|
||||||
|
{ "stcls", OPCDTS(ls), OPCDTSF,OP_R, OP_R, OP_R },
|
||||||
|
{ "stcge", OPCDTS(ge), OPCDTSF,OP_R, OP_R, OP_R },
|
||||||
|
{ "stclt", OPCDTS(lt), OPCDTSF,OP_R, OP_R, OP_R },
|
||||||
|
{ "stcgt", OPCDTS(gt), OPCDTSF,OP_R, OP_R, OP_R },
|
||||||
|
{ "stcle", OPCDTS(le), OPCDTSF,OP_R, OP_R, OP_R },
|
||||||
|
{ "stcal", OPCDTS(al), OPCDTSF,OP_R, OP_R, OP_R },
|
||||||
/* stm */
|
/* stm */
|
||||||
{ "stm", OPBDTS(al), OPBDTSF,OP_R, OP_R, OP_R },
|
{ "stm", OPBDTS(al), OPBDTSF,OP_R, OP_R, OP_R },
|
||||||
{ "stmeq", OPBDTS(eq), OPBDTSF,OP_R, OP_R, OP_R },
|
{ "stmeq", OPBDTS(eq), OPBDTSF,OP_R, OP_R, OP_R },
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
cmpeq %r5, %r4, %r3
|
cmpeq %r5, %r4, %r3
|
||||||
eor %r5, %r4, %r3
|
eor %r5, %r4, %r3
|
||||||
eoreq %r5, %r4, %r3
|
eoreq %r5, %r4, %r3
|
||||||
|
ldc %r0, %r0, %r0
|
||||||
|
ldceq %r0, %r0, %r0
|
||||||
ldm %r0, %r0, %r0
|
ldm %r0, %r0, %r0
|
||||||
ldmeq %r0, %r0, %r0
|
ldmeq %r0, %r0, %r0
|
||||||
ldr %r0, %r0, %r0
|
ldr %r0, %r0, %r0
|
||||||
@ -41,6 +43,8 @@
|
|||||||
rsceq %r5, %r4, %r3
|
rsceq %r5, %r4, %r3
|
||||||
sbc %r5, %r4, %r3
|
sbc %r5, %r4, %r3
|
||||||
sbceq %r5, %r4, %r3
|
sbceq %r5, %r4, %r3
|
||||||
|
stc %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
|
||||||
|
Loading…
Reference in New Issue
Block a user