* hppa.h: Add strict variants of PA1.0/PA1.1 loads and stores.

Add a few PA2.0 loads and store variants.
This commit is contained in:
Jeff Law 1999-09-06 10:42:11 +00:00
parent 0f4f8b56e7
commit 90765e3a9e
2 changed files with 66 additions and 0 deletions

View File

@ -1,3 +1,8 @@
Mon Sep 6 04:41:42 1999 Jeffrey A Law (law@cygnus.com)
* hppa.h: Add strict variants of PA1.0/PA1.1 loads and stores.
Add a few PA2.0 loads and store variants.
1999-09-04 Steve Chamberlain <sac@pobox.com> 1999-09-04 Steve Chamberlain <sac@pobox.com>
* pj.h: New file. * pj.h: New file.

View File

@ -264,16 +264,40 @@ static const struct pa_opcode pa_opcodes[] =
{ "mtsar", 0x01601840, 0xffe0ffff, "x", pa10}, /* mtctl r,cr11 */ { "mtsar", 0x01601840, 0xffe0ffff, "x", pa10}, /* mtctl r,cr11 */
/* Loads and Stores for integer registers. */ /* Loads and Stores for integer registers. */
{ "ldd", 0x0c0000c0, 0xfc001fc0, "cxx(s,b),t", pa20, FLAG_STRICT},
{ "ldd", 0x0c0000c0, 0xfc001fc0, "cxx(b),t", pa20, FLAG_STRICT},
{ "ldd", 0x0c0010c0, 0xfc001fc0, "cm5(s,b),t", pa20, FLAG_STRICT},
{ "ldd", 0x0c0010c0, 0xfc001fc0, "cm5(b),t", pa20, FLAG_STRICT},
{ "ldw", 0x0c000080, 0xfc001fc0, "cxx(s,b),t", pa10, FLAG_STRICT},
{ "ldw", 0x0c000080, 0xfc001fc0, "cxx(b),t", pa10, FLAG_STRICT},
{ "ldw", 0x0c001080, 0xfc001fc0, "cm5(s,b),t", pa10, FLAG_STRICT},
{ "ldw", 0x0c001080, 0xfc001fc0, "cm5(b),t", pa10, FLAG_STRICT},
{ "ldw", 0x48000000, 0xfc000000, "j(s,b),x", pa10}, { "ldw", 0x48000000, 0xfc000000, "j(s,b),x", pa10},
{ "ldw", 0x48000000, 0xfc000000, "j(b),x", pa10}, { "ldw", 0x48000000, 0xfc000000, "j(b),x", pa10},
{ "ldh", 0x0c000040, 0xfc001fc0, "cxx(s,b),t", pa10, FLAG_STRICT},
{ "ldh", 0x0c000040, 0xfc001fc0, "cxx(b),t", pa10, FLAG_STRICT},
{ "ldh", 0x0c001040, 0xfc001fc0, "cm5(s,b),t", pa10, FLAG_STRICT},
{ "ldh", 0x0c001040, 0xfc001fc0, "cm5(b),t", pa10, FLAG_STRICT},
{ "ldh", 0x44000000, 0xfc000000, "j(s,b),x", pa10}, { "ldh", 0x44000000, 0xfc000000, "j(s,b),x", pa10},
{ "ldh", 0x44000000, 0xfc000000, "j(b),x", pa10}, { "ldh", 0x44000000, 0xfc000000, "j(b),x", pa10},
{ "ldb", 0x0c000000, 0xfc001fc0, "cxx(s,b),t", pa10, FLAG_STRICT},
{ "ldb", 0x0c000000, 0xfc001fc0, "cxx(b),t", pa10, FLAG_STRICT},
{ "ldb", 0x0c001000, 0xfc001fc0, "cm5(s,b),t", pa10, FLAG_STRICT},
{ "ldb", 0x0c001000, 0xfc001fc0, "cm5(b),t", pa10, FLAG_STRICT},
{ "ldb", 0x40000000, 0xfc000000, "j(s,b),x", pa10}, { "ldb", 0x40000000, 0xfc000000, "j(s,b),x", pa10},
{ "ldb", 0x40000000, 0xfc000000, "j(b),x", pa10}, { "ldb", 0x40000000, 0xfc000000, "j(b),x", pa10},
{ "std", 0x0c0012c0, 0xfc001fc0, "cmx,V(s,b)", pa20, FLAG_STRICT},
{ "std", 0x0c0012c0, 0xfc001fc0, "cmx,V(b)", pa20, FLAG_STRICT},
{ "stw", 0x0c001280, 0xfc001fc0, "cmx,V(s,b)", pa10, FLAG_STRICT},
{ "stw", 0x0c001280, 0xfc001fc0, "cmx,V(b)", pa10, FLAG_STRICT},
{ "stw", 0x68000000, 0xfc000000, "x,j(s,b)", pa10}, { "stw", 0x68000000, 0xfc000000, "x,j(s,b)", pa10},
{ "stw", 0x68000000, 0xfc000000, "x,j(b)", pa10}, { "stw", 0x68000000, 0xfc000000, "x,j(b)", pa10},
{ "sth", 0x0c001240, 0xfc001fc0, "cmx,V(s,b)", pa10, FLAG_STRICT},
{ "sth", 0x0c001240, 0xfc001fc0, "cmx,V(b)", pa10, FLAG_STRICT},
{ "sth", 0x64000000, 0xfc000000, "x,j(s,b)", pa10}, { "sth", 0x64000000, 0xfc000000, "x,j(s,b)", pa10},
{ "sth", 0x64000000, 0xfc000000, "x,j(b)", pa10}, { "sth", 0x64000000, 0xfc000000, "x,j(b)", pa10},
{ "stb", 0x0c001200, 0xfc001fc0, "cmx,V(s,b)", pa10, FLAG_STRICT},
{ "stb", 0x0c001200, 0xfc001fc0, "cmx,V(b)", pa10, FLAG_STRICT},
{ "stb", 0x60000000, 0xfc000000, "x,j(s,b)", pa10}, { "stb", 0x60000000, 0xfc000000, "x,j(s,b)", pa10},
{ "stb", 0x60000000, 0xfc000000, "x,j(b)", pa10}, { "stb", 0x60000000, 0xfc000000, "x,j(b)", pa10},
{ "ldwm", 0x4c000000, 0xfc000000, "j(s,b),x", pa10}, { "ldwm", 0x4c000000, 0xfc000000, "j(s,b),x", pa10},
@ -286,6 +310,23 @@ static const struct pa_opcode pa_opcodes[] =
{ "ldhx", 0x0c000040, 0xfc001fc0, "cxx(b),t", pa10}, { "ldhx", 0x0c000040, 0xfc001fc0, "cxx(b),t", pa10},
{ "ldbx", 0x0c000000, 0xfc001fc0, "cxx(s,b),t", pa10}, { "ldbx", 0x0c000000, 0xfc001fc0, "cxx(s,b),t", pa10},
{ "ldbx", 0x0c000000, 0xfc001fc0, "cxx(b),t", pa10}, { "ldbx", 0x0c000000, 0xfc001fc0, "cxx(b),t", pa10},
{ "ldwa", 0x0c000180, 0xfc00dfc0, "cxx(b),t", pa10, FLAG_STRICT},
{ "ldwa", 0x0c001180, 0xfc00dfc0, "cm5(b),t", pa10, FLAG_STRICT},
{ "ldcw", 0x0c0001c0, 0xfc001fc0, "cxx(s,b),t", pa10, FLAG_STRICT},
{ "ldcw", 0x0c0001c0, 0xfc001fc0, "cxx(b),t", pa10, FLAG_STRICT},
{ "ldcw", 0x0c0011c0, 0xfc001fc0, "cm5(s,b),t", pa10, FLAG_STRICT},
{ "ldcw", 0x0c0011c0, 0xfc001fc0, "cm5(b),t", pa10, FLAG_STRICT},
{ "stwa", 0x0c001380, 0xfc00dfc0, "cmx,V(b)", pa10, FLAG_STRICT},
{ "stby", 0x0c001300, 0xfc001fc0, "csx,V(s,b)", pa10, FLAG_STRICT},
{ "stby", 0x0c001300, 0xfc001fc0, "csx,V(b)", pa10, FLAG_STRICT},
{ "ldda", 0x0c000100, 0xfc00dfc0, "cxx(b),t", pa20, FLAG_STRICT},
{ "ldda", 0x0c001100, 0xfc00dfc0, "cm5(b),t", pa20, FLAG_STRICT},
{ "ldcd", 0x0c000140, 0xfc001fc0, "cxx(s,b),t", pa20, FLAG_STRICT},
{ "ldcd", 0x0c000140, 0xfc001fc0, "cxx(b),t", pa20, FLAG_STRICT},
{ "ldcd", 0x0c001140, 0xfc001fc0, "cm5(s,b),t", pa20, FLAG_STRICT},
{ "ldcd", 0x0c001140, 0xfc001fc0, "cm5(b),t", pa20, FLAG_STRICT},
{ "stda", 0x0c0013c0, 0xfc001fc0, "cmx,V(s,b)", pa20, FLAG_STRICT},
{ "stda", 0x0c0013c0, 0xfc001fc0, "cmx,V(b)", pa20, FLAG_STRICT},
{ "ldwax", 0x0c000180, 0xfc00dfc0, "cxx(b),t", pa10}, { "ldwax", 0x0c000180, 0xfc00dfc0, "cxx(b),t", pa10},
{ "ldcwx", 0x0c0001c0, 0xfc001fc0, "cxx(s,b),t", pa10}, { "ldcwx", 0x0c0001c0, 0xfc001fc0, "cxx(s,b),t", pa10},
{ "ldcwx", 0x0c0001c0, 0xfc001fc0, "cxx(b),t", pa10}, { "ldcwx", 0x0c0001c0, 0xfc001fc0, "cxx(b),t", pa10},
@ -305,6 +346,8 @@ static const struct pa_opcode pa_opcodes[] =
{ "stbs", 0x0c001200, 0xfc001fc0, "cmx,V(s,b)", pa10}, { "stbs", 0x0c001200, 0xfc001fc0, "cmx,V(s,b)", pa10},
{ "stbs", 0x0c001200, 0xfc001fc0, "cmx,V(b)", pa10}, { "stbs", 0x0c001200, 0xfc001fc0, "cmx,V(b)", pa10},
{ "stwas", 0x0c001380, 0xfc00dfc0, "cmx,V(b)", pa10}, { "stwas", 0x0c001380, 0xfc00dfc0, "cmx,V(b)", pa10},
{ "stdby", 0x0c001340, 0xfc001fc0, "csx,V(s,b)", pa20, FLAG_STRICT},
{ "stdby", 0x0c001340, 0xfc001fc0, "csx,V(b)", pa20, FLAG_STRICT},
{ "stbys", 0x0c001300, 0xfc001fc0, "csx,V(s,b)", pa10}, { "stbys", 0x0c001300, 0xfc001fc0, "csx,V(s,b)", pa10},
{ "stbys", 0x0c001300, 0xfc001fc0, "csx,V(b)", pa10}, { "stbys", 0x0c001300, 0xfc001fc0, "csx,V(b)", pa10},
@ -528,6 +571,8 @@ static const struct pa_opcode pa_opcodes[] =
{ "fice", 0x040002c0, 0xfc001fdf, "cZx(S,b)", pa10}, { "fice", 0x040002c0, 0xfc001fdf, "cZx(S,b)", pa10},
{ "fice", 0x040002c0, 0xfc001fdf, "cZx(b)", pa10}, { "fice", 0x040002c0, 0xfc001fdf, "cZx(b)", pa10},
{ "diag", 0x14000000, 0xfc000000, "D", pa10}, { "diag", 0x14000000, 0xfc000000, "D", pa10},
{ "idtlbt", 0x04001800, 0xfc00ffff, "x,b", pa20, FLAG_STRICT},
{ "iitlbt", 0x04000800, 0xfc00ffff, "x,b", pa20, FLAG_STRICT},
/* These may be specific to certain versions of the PA. Joel claimed /* These may be specific to certain versions of the PA. Joel claimed
they were 72000 (7200?) specific. However, I'm almost certain the they were 72000 (7200?) specific. However, I'm almost certain the
@ -636,6 +681,22 @@ static const struct pa_opcode pa_opcodes[] =
{ "cstws", 0x24001200, 0xfc001e00, "ucmt,5(b)", pa10}, { "cstws", 0x24001200, 0xfc001e00, "ucmt,5(b)", pa10},
{ "cstds", 0x2c001200, 0xfc001e00, "ucmt,5(s,b)", pa10}, { "cstds", 0x2c001200, 0xfc001e00, "ucmt,5(s,b)", pa10},
{ "cstds", 0x2c001200, 0xfc001e00, "ucmt,5(b)", pa10}, { "cstds", 0x2c001200, 0xfc001e00, "ucmt,5(b)", pa10},
{ "cldw", 0x24000000, 0xfc001e00, "ucxx(s,b),t", pa10, FLAG_STRICT},
{ "cldw", 0x24000000, 0xfc001e00, "ucxx(b),t", pa10, FLAG_STRICT},
{ "cldw", 0x24001000, 0xfc001e00, "ucm5(s,b),t", pa10, FLAG_STRICT},
{ "cldw", 0x24001000, 0xfc001e00, "ucm5(b),t", pa10, FLAG_STRICT},
{ "cldd", 0x2c000000, 0xfc001e00, "ucxx(s,b),t", pa10, FLAG_STRICT},
{ "cldd", 0x2c000000, 0xfc001e00, "ucxx(b),t", pa10, FLAG_STRICT},
{ "cldd", 0x2c001000, 0xfc001e00, "ucm5(s,b),t", pa10, FLAG_STRICT},
{ "cldd", 0x2c001000, 0xfc001e00, "ucm5(b),t", pa20, FLAG_STRICT},
{ "cstw", 0x24000200, 0xfc001e00, "ucxt,x(s,b)", pa10, FLAG_STRICT},
{ "cstw", 0x24000200, 0xfc001e00, "ucxt,x(b)", pa10, FLAG_STRICT},
{ "cstw", 0x24001200, 0xfc001e00, "ucmt,5(s,b)", pa10, FLAG_STRICT},
{ "cstw", 0x24001200, 0xfc001e00, "ucmt,5(b)", pa10, FLAG_STRICT},
{ "cstd", 0x2c000200, 0xfc001e00, "ucxt,x(s,b)", pa10, FLAG_STRICT},
{ "cstd", 0x2c000200, 0xfc001e00, "ucxt,x(b)", pa10, FLAG_STRICT},
{ "cstd", 0x2c001200, 0xfc001e00, "ucmt,5(s,b)", pa10, FLAG_STRICT},
{ "cstd", 0x2c001200, 0xfc001e00, "ucmt,5(b)", pa10, FLAG_STRICT},
}; };
#define NUMOPCODES ((sizeof pa_opcodes)/(sizeof pa_opcodes[0])) #define NUMOPCODES ((sizeof pa_opcodes)/(sizeof pa_opcodes[0]))