diff options
Diffstat (limited to 'include/opcode/hppa.h')
-rw-r--r-- | include/opcode/hppa.h | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/include/opcode/hppa.h b/include/opcode/hppa.h index d93798570..947bd0b0c 100644 --- a/include/opcode/hppa.h +++ b/include/opcode/hppa.h @@ -71,8 +71,8 @@ struct pa_opcode In the args field, the following characters are unused: ' " & - / 34 6789:;< > @' - ' C Y [\] ' - ' e y } ' + ' BC M [\] ' + ' e g l y } ' Here are all the characters: @@ -145,11 +145,7 @@ Also these: the bb instruction. It's the same as r above, except the value is in a different location) Z %r1 -- implicit target of addil instruction. - g ,gate completer for new syntax branch - l ,l completer for new syntax branch - M ,push completer for new syntax branch L ,%r2 completer for new syntax branch - B ,pop completer for new syntax branch { Source format completer for fcnv _ Destination format completer for fcnv h cbit for fcmp @@ -158,6 +154,7 @@ Also these: # 14bit offset for double precision FP load long/store. J Yet another 14bit offset with an unusual encoding. K Yet another 14bit offset with an unusual encoding. + Y %sr0,%r31 -- implicit target of be,l instruction. Completer operands all have 'c' as the prefix: @@ -169,6 +166,11 @@ Completer operands all have 'c' as the prefix: cc Another load/store completer with a different encoding than the others + cp branch link and push completer + cP branch pop completer + cl branch link completer + cg branch gate completer + cw read/write completer for PROBE cW wide completer for MFCTL cL local processor completer for cache control @@ -262,13 +264,14 @@ static const char *const completer_chars = ",CcY<>?!@+&U~FfGHINnOoZMadu|/=0123%e static const struct pa_opcode pa_opcodes[] = { +/* pseudo-instructions */ -{ "b", 0xe8002000, 0xfc00e000, "gnW,b", pa10, FLAG_STRICT}, -{ "b", 0xe8008000, 0xfc00e000, "lMnXL", pa20, FLAG_STRICT}, -{ "b", 0xe800a000, 0xfc00e000, "lnXL", pa20, FLAG_STRICT}, -{ "b", 0xe8000000, 0xfc00e000, "lnW,b", pa10, FLAG_STRICT}, -{ "b", 0xe8000000, 0xffe0e000, "nW", pa10, 0}, /* bl foo,r0 */ { "ldi", 0x34000000, 0xffe0c000, "j,x", pa10, 0},/* ldo val(r0),r */ + +{ "call", 0xe800f000, 0xfc1ffffd, "n(b)", pa20, FLAG_STRICT}, +{ "call", 0xe800a000, 0xffe0e000, "nW", pa10, FLAG_STRICT}, +{ "ret", 0xe840d000, 0xfffffffd, "n", pa20, FLAG_STRICT}, + { "comib", 0x84000000, 0xfc000000, "?nn5,b,w", pa10, 0}, /* comib{tf}*/ /* This entry is for the disassembler only. It will never be used by assembler. */ @@ -397,18 +400,24 @@ static const struct pa_opcode pa_opcodes[] = { "addil", 0x28000000, 0xfc000000, "k,b", pa10, 0}, /* Branching instructions. */ +{ "b", 0xe8008000, 0xfc00e000, "cpnXL", pa20, FLAG_STRICT}, +{ "b", 0xe800a000, 0xfc00e000, "clnXL", pa20, FLAG_STRICT}, +{ "b", 0xe8000000, 0xfc00e000, "clnW,b", pa10, FLAG_STRICT}, +{ "b", 0xe8002000, 0xfc00e000, "cgnW,b", pa10, FLAG_STRICT}, +{ "b", 0xe8000000, 0xffe0e000, "nW", pa10}, /* b,l foo,r0 */ { "bl", 0xe8000000, 0xfc00e000, "nW,b", pa10, 0}, { "gate", 0xe8002000, 0xfc00e000, "nW,b", pa10, 0}, { "blr", 0xe8004000, 0xfc00e001, "nx,b", pa10, 0}, { "bv", 0xe800c000, 0xfc00fffd, "nx(b)", pa10, 0}, { "bv", 0xe800c000, 0xfc00fffd, "n(b)", pa10, 0}, -{ "bve", 0xe800f001, 0xfc00ffff, "lMn(b)L", pa20, FLAG_STRICT}, -{ "bve", 0xe800f000, 0xfc00ffff, "ln(b)L", pa20, FLAG_STRICT}, -{ "bve", 0xe800d001, 0xfc00ffff, "Bn(b)", pa20, FLAG_STRICT}, -{ "bve", 0xe800d000, 0xfc00ffff, "n(b)", pa20, FLAG_STRICT}, -{ "be", 0xe4000000, 0xfc000000, "lnz(S,b)", pa10, FLAG_STRICT}, -{ "be", 0xe0000000, 0xfc000000, "nz(S,b)", pa10, FLAG_STRICT}, +{ "bve", 0xe800f001, 0xfc1ffffd, "cpn(b)L", pa20, FLAG_STRICT}, +{ "bve", 0xe800f000, 0xfc1ffffd, "cln(b)L", pa20, FLAG_STRICT}, +{ "bve", 0xe800d001, 0xfc1ffffd, "cPn(b)", pa20, FLAG_STRICT}, +{ "bve", 0xe800d000, 0xfc1ffffd, "n(b)", pa20, FLAG_STRICT}, +{ "be", 0xe4000000, 0xfc000000, "clnz(S,b),Y", pa10, FLAG_STRICT}, +{ "be", 0xe4000000, 0xfc000000, "clnz(b),Y", pa10, FLAG_STRICT}, { "be", 0xe0000000, 0xfc000000, "nz(S,b)", pa10, 0}, +{ "be", 0xe0000000, 0xfc000000, "nz(b)", pa10, 0}, { "ble", 0xe4000000, 0xfc000000, "nz(S,b)", pa10, 0}, { "movb", 0xc8000000, 0xfc000000, "?ynx,b,w", pa10, 0}, { "movib", 0xcc000000, 0xfc000000, "?yn5,b,w", pa10, 0}, |