Added the CPU_HAS_BITIMM capability.
This commit is contained in:
@@ -1609,6 +1609,9 @@ either a string or an expression value.
|
||||
|
||||
<descrip>
|
||||
|
||||
<tag><tt>CPU_HAS_BITIMM</tt></tag>
|
||||
Checks for the availability of the "bit #imm" instruction.
|
||||
|
||||
<tag><tt>CPU_HAS_BRA8</tt></tag>
|
||||
Checks for the availability of a short (8 bit) branch.
|
||||
|
||||
|
||||
@@ -50,6 +50,7 @@ struct Capability {
|
||||
capability_t Cap;
|
||||
} Capabilities [] = {
|
||||
/* BEGIN SORTED.SH */
|
||||
{ "CPU_HAS_BITIMM", CAP_CPU_HAS_BITIMM },
|
||||
{ "CPU_HAS_BRA8", CAP_CPU_HAS_BRA8 },
|
||||
{ "CPU_HAS_INA", CAP_CPU_HAS_INA },
|
||||
{ "CPU_HAS_PUSHXY", CAP_CPU_HAS_PUSHXY },
|
||||
|
||||
@@ -54,6 +54,7 @@ enum capability_t {
|
||||
CAP_CPU_HAS_PUSHXY = 2, /* CPU has PHX/PHY/PLX/PLY */
|
||||
CAP_CPU_HAS_ZPIND = 3, /* CPU has "(zp)" mode (no offset) */
|
||||
CAP_CPU_HAS_STZ = 4, /* CPU has "store zero" (!) instruction */
|
||||
CAP_CPU_HAS_BITIMM = 5, /* CPU has "bit #imm" instruction */
|
||||
};
|
||||
typedef enum capability_t capability_t;
|
||||
|
||||
|
||||
@@ -96,54 +96,59 @@ const unsigned CPUIsets[CPU_COUNT] = {
|
||||
** is deliberately hidden from the outside so it can be extended to 64 bit or
|
||||
** even more.
|
||||
*/
|
||||
#define CAP_BIT(Cap) (UINT32_C (1) << (Cap))
|
||||
#define CAP_NONE UINT32_C (0)
|
||||
#define CAP_6502 UINT32_C (0)
|
||||
#define CAP_6502X UINT32_C (0)
|
||||
#define CAP_6502DTV UINT32_C (0)
|
||||
#define CAP_6502 CAP_NONE
|
||||
#define CAP_6502X CAP_NONE
|
||||
#define CAP_6502DTV CAP_NONE
|
||||
#define CAP_65SC02 \
|
||||
((UINT32_C (1) << CAP_CPU_HAS_BRA8) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_INA) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_PUSHXY) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_ZPIND) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_STZ))
|
||||
(CAP_BIT (CAP_CPU_HAS_BITIMM) | \
|
||||
CAP_BIT (CAP_CPU_HAS_BRA8) | \
|
||||
CAP_BIT (CAP_CPU_HAS_INA) | \
|
||||
CAP_BIT (CAP_CPU_HAS_PUSHXY) | \
|
||||
CAP_BIT (CAP_CPU_HAS_ZPIND) | \
|
||||
CAP_BIT (CAP_CPU_HAS_STZ))
|
||||
#define CAP_65C02 \
|
||||
((UINT32_C (1) << CAP_CPU_HAS_BRA8) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_INA) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_PUSHXY) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_ZPIND) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_STZ))
|
||||
(CAP_BIT (CAP_CPU_HAS_BITIMM) | \
|
||||
CAP_BIT (CAP_CPU_HAS_BRA8) | \
|
||||
CAP_BIT (CAP_CPU_HAS_INA) | \
|
||||
CAP_BIT (CAP_CPU_HAS_PUSHXY) | \
|
||||
CAP_BIT (CAP_CPU_HAS_ZPIND) | \
|
||||
CAP_BIT (CAP_CPU_HAS_STZ))
|
||||
#define CAP_65816 \
|
||||
((UINT32_C (1) << CAP_CPU_HAS_BRA8) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_INA) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_PUSHXY) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_ZPIND) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_STZ))
|
||||
#define CAP_SWEET16 UINT32_C (0)
|
||||
(CAP_BIT (CAP_CPU_HAS_BITIMM) | \
|
||||
CAP_BIT (CAP_CPU_HAS_BRA8) | \
|
||||
CAP_BIT (CAP_CPU_HAS_INA) | \
|
||||
CAP_BIT (CAP_CPU_HAS_PUSHXY) | \
|
||||
CAP_BIT (CAP_CPU_HAS_ZPIND) | \
|
||||
CAP_BIT (CAP_CPU_HAS_STZ))
|
||||
#define CAP_SWEET16 CAP_NONE
|
||||
#define CAP_HUC6280 \
|
||||
((UINT32_C (1) << CAP_CPU_HAS_BRA8) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_INA) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_PUSHXY) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_ZPIND) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_STZ))
|
||||
(CAP_BIT (CAP_CPU_HAS_BITIMM) | \
|
||||
CAP_BIT (CAP_CPU_HAS_BRA8) | \
|
||||
CAP_BIT (CAP_CPU_HAS_INA) | \
|
||||
CAP_BIT (CAP_CPU_HAS_PUSHXY) | \
|
||||
CAP_BIT (CAP_CPU_HAS_ZPIND) | \
|
||||
CAP_BIT (CAP_CPU_HAS_STZ))
|
||||
#define CAP_M740 \
|
||||
((UINT32_C (1) << CAP_CPU_HAS_BRA8) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_INA))
|
||||
(CAP_BIT (CAP_CPU_HAS_BRA8) | \
|
||||
CAP_BIT (CAP_CPU_HAS_INA))
|
||||
#define CAP_4510 \
|
||||
((UINT32_C (1) << CAP_CPU_HAS_BRA8) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_INA) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_PUSHXY))
|
||||
(CAP_BIT (CAP_CPU_HAS_BRA8) | \
|
||||
CAP_BIT (CAP_CPU_HAS_INA) | \
|
||||
CAP_BIT (CAP_CPU_HAS_PUSHXY))
|
||||
#define CAP_45GS02 \
|
||||
((UINT32_C (1) << CAP_CPU_HAS_BRA8) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_INA) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_PUSHXY))
|
||||
(CAP_BIT (CAP_CPU_HAS_BRA8) | \
|
||||
CAP_BIT (CAP_CPU_HAS_INA) | \
|
||||
CAP_BIT (CAP_CPU_HAS_PUSHXY))
|
||||
#define CAP_W65C02 \
|
||||
((UINT32_C (1) << CAP_CPU_HAS_BRA8) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_INA) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_PUSHXY))
|
||||
(CAP_BIT (CAP_CPU_HAS_BRA8) | \
|
||||
CAP_BIT (CAP_CPU_HAS_INA) | \
|
||||
CAP_BIT (CAP_CPU_HAS_PUSHXY))
|
||||
#define CAP_65CE02 \
|
||||
((UINT32_C (1) << CAP_CPU_HAS_BRA8) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_INA) | \
|
||||
(UINT32_C (1) << CAP_CPU_HAS_PUSHXY))
|
||||
(CAP_BIT (CAP_CPU_HAS_BRA8) | \
|
||||
CAP_BIT (CAP_CPU_HAS_INA) | \
|
||||
CAP_BIT (CAP_CPU_HAS_PUSHXY))
|
||||
|
||||
/* Table containing one capability entry per CPU */
|
||||
static const uint64_t CPUCaps[CPU_COUNT] = {
|
||||
|
||||
Reference in New Issue
Block a user