cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

dfp-ops.c.inc (5993B)


      1#define _GEN_DFP_LONG(name, op1, op2, mask) \
      2GEN_HANDLER_E(name, 0x3B, op1, op2, mask, PPC_NONE, PPC2_DFP)
      3
      4#define _GEN_DFP_LONG_300(name, op1, op2, mask)                   \
      5GEN_HANDLER_E(name, 0x3B, op1, op2, mask, PPC_NONE, PPC2_ISA300)
      6
      7#define _GEN_DFP_LONGx2(name, op1, op2, mask) \
      8GEN_HANDLER_E(name, 0x3B, op1, 0x00 | op2, mask, PPC_NONE, PPC2_DFP), \
      9GEN_HANDLER_E(name, 0x3B, op1, 0x10 | op2, mask, PPC_NONE, PPC2_DFP)
     10
     11#define _GEN_DFP_LONGx4(name, op1, op2, mask) \
     12GEN_HANDLER_E(name, 0x3B, op1, 0x00 | op2, mask, PPC_NONE, PPC2_DFP), \
     13GEN_HANDLER_E(name, 0x3B, op1, 0x08 | op2, mask, PPC_NONE, PPC2_DFP), \
     14GEN_HANDLER_E(name, 0x3B, op1, 0x10 | op2, mask, PPC_NONE, PPC2_DFP), \
     15GEN_HANDLER_E(name, 0x3B, op1, 0x18 | op2, mask, PPC_NONE, PPC2_DFP)
     16
     17#define _GEN_DFP_QUAD(name, op1, op2, mask) \
     18GEN_HANDLER_E(name, 0x3F, op1, op2, mask, PPC_NONE, PPC2_DFP)
     19
     20#define _GEN_DFP_QUAD_300(name, op1, op2, mask)             \
     21GEN_HANDLER_E(name, 0x3F, op1, op2, mask, PPC_NONE, PPC2_ISA300)
     22
     23#define _GEN_DFP_QUADx2(name, op1, op2, mask) \
     24GEN_HANDLER_E(name, 0x3F, op1, 0x00 | op2, mask, PPC_NONE, PPC2_DFP), \
     25GEN_HANDLER_E(name, 0x3F, op1, 0x10 | op2, mask, PPC_NONE, PPC2_DFP)
     26
     27#define _GEN_DFP_QUADx4(name, op1, op2, mask)                         \
     28GEN_HANDLER_E(name, 0x3F, op1, 0x00 | op2, mask, PPC_NONE, PPC2_DFP), \
     29GEN_HANDLER_E(name, 0x3F, op1, 0x08 | op2, mask, PPC_NONE, PPC2_DFP), \
     30GEN_HANDLER_E(name, 0x3F, op1, 0x10 | op2, mask, PPC_NONE, PPC2_DFP), \
     31GEN_HANDLER_E(name, 0x3F, op1, 0x18 | op2, mask, PPC_NONE, PPC2_DFP)
     32
     33#define GEN_DFP_T_A_B_Rc(name, op1, op2) \
     34_GEN_DFP_LONG(name, op1, op2, 0x00000000)
     35
     36#define GEN_DFP_Tp_Ap_Bp_Rc(name, op1, op2) \
     37_GEN_DFP_QUAD(name, op1, op2, 0x00210800)
     38
     39#define GEN_DFP_Tp_A_Bp_Rc(name, op1, op2) \
     40_GEN_DFP_QUAD(name, op1, op2, 0x00200800)
     41
     42#define GEN_DFP_T_B_Rc(name, op1, op2) \
     43_GEN_DFP_LONG(name, op1, op2, 0x001F0000)
     44
     45#define GEN_DFP_Tp_Bp_Rc(name, op1, op2) \
     46_GEN_DFP_QUAD(name, op1, op2, 0x003F0800)
     47
     48#define GEN_DFP_Tp_B_Rc(name, op1, op2) \
     49_GEN_DFP_QUAD(name, op1, op2, 0x003F0000)
     50
     51#define GEN_DFP_T_Bp_Rc(name, op1, op2) \
     52_GEN_DFP_QUAD(name, op1, op2, 0x001F0800)
     53
     54#define GEN_DFP_BF_A_B(name, op1, op2) \
     55_GEN_DFP_LONG(name, op1, op2, 0x00000001)
     56
     57#define GEN_DFP_BF_A_B_300(name, op1, op2)          \
     58_GEN_DFP_LONG_300(name, op1, op2, 0x00400001)
     59
     60#define GEN_DFP_BF_Ap_Bp(name, op1, op2) \
     61_GEN_DFP_QUAD(name, op1, op2, 0x00610801)
     62
     63#define GEN_DFP_BF_A_Bp(name, op1, op2) \
     64_GEN_DFP_QUAD(name, op1, op2, 0x00600801)
     65
     66#define GEN_DFP_BF_A_Bp_300(name, op1, op2)     \
     67_GEN_DFP_QUAD_300(name, op1, op2, 0x00400001)
     68
     69#define GEN_DFP_BF_A_DCM(name, op1, op2) \
     70_GEN_DFP_LONGx2(name, op1, op2, 0x00600001)
     71
     72#define GEN_DFP_BF_Ap_DCM(name, op1, op2) \
     73_GEN_DFP_QUADx2(name, op1, op2, 0x00610001)
     74
     75#define GEN_DFP_T_A_B_RMC_Rc(name, op1, op2) \
     76_GEN_DFP_LONGx4(name, op1, op2, 0x00000000)
     77
     78#define GEN_DFP_Tp_Ap_Bp_RMC_Rc(name, op1, op2) \
     79_GEN_DFP_QUADx4(name, op1, op2, 0x02010800)
     80
     81#define GEN_DFP_Tp_A_Bp_RMC_Rc(name, op1, op2) \
     82_GEN_DFP_QUADx4(name, op1, op2, 0x02000800)
     83
     84#define GEN_DFP_TE_T_B_RMC_Rc(name, op1, op2) \
     85_GEN_DFP_LONGx4(name, op1, op2, 0x00000000)
     86
     87#define GEN_DFP_TE_Tp_Bp_RMC_Rc(name, op1, op2) \
     88_GEN_DFP_QUADx4(name, op1, op2, 0x00200800)
     89
     90#define GEN_DFP_R_T_B_RMC_Rc(name, op1, op2) \
     91_GEN_DFP_LONGx4(name, op1, op2, 0x001E0000)
     92
     93#define GEN_DFP_R_Tp_Bp_RMC_Rc(name, op1, op2) \
     94_GEN_DFP_QUADx4(name, op1, op2, 0x003E0800)
     95
     96#define GEN_DFP_SP_T_B_Rc(name, op1, op2) \
     97_GEN_DFP_LONG(name, op1, op2, 0x00070000)
     98
     99#define GEN_DFP_SP_Tp_Bp_Rc(name, op1, op2) \
    100_GEN_DFP_QUAD(name, op1, op2, 0x00270800)
    101
    102#define GEN_DFP_S_T_B_Rc(name, op1, op2) \
    103_GEN_DFP_LONG(name, op1, op2, 0x000F0000)
    104
    105#define GEN_DFP_S_Tp_Bp_Rc(name, op1, op2) \
    106_GEN_DFP_QUAD(name, op1, op2, 0x002F0800)
    107
    108#define GEN_DFP_T_A_SH_Rc(name, op1, op2) \
    109_GEN_DFP_LONGx2(name, op1, op2, 0x00000000)
    110
    111#define GEN_DFP_Tp_Ap_SH_Rc(name, op1, op2) \
    112_GEN_DFP_QUADx2(name, op1, op2, 0x00210000)
    113
    114GEN_DFP_T_A_B_Rc(dadd, 0x02, 0x00),
    115GEN_DFP_Tp_Ap_Bp_Rc(daddq, 0x02, 0x00),
    116GEN_DFP_T_A_B_Rc(dsub, 0x02, 0x10),
    117GEN_DFP_Tp_Ap_Bp_Rc(dsubq, 0x02, 0x10),
    118GEN_DFP_T_A_B_Rc(dmul, 0x02, 0x01),
    119GEN_DFP_Tp_Ap_Bp_Rc(dmulq, 0x02, 0x01),
    120GEN_DFP_T_A_B_Rc(ddiv, 0x02, 0x11),
    121GEN_DFP_Tp_Ap_Bp_Rc(ddivq, 0x02, 0x11),
    122GEN_DFP_BF_A_B(dcmpu, 0x02, 0x14),
    123GEN_DFP_BF_Ap_Bp(dcmpuq, 0x02, 0x14),
    124GEN_DFP_BF_A_B(dcmpo, 0x02, 0x04),
    125GEN_DFP_BF_Ap_Bp(dcmpoq, 0x02, 0x04),
    126GEN_DFP_BF_A_DCM(dtstdc, 0x02, 0x06),
    127GEN_DFP_BF_Ap_DCM(dtstdcq, 0x02, 0x06),
    128GEN_DFP_BF_A_DCM(dtstdg, 0x02, 0x07),
    129GEN_DFP_BF_Ap_DCM(dtstdgq, 0x02, 0x07),
    130GEN_DFP_BF_A_B(dtstex, 0x02, 0x05),
    131GEN_DFP_BF_Ap_Bp(dtstexq, 0x02, 0x05),
    132GEN_DFP_BF_A_B(dtstsf, 0x02, 0x15),
    133GEN_DFP_BF_A_Bp(dtstsfq, 0x02, 0x15),
    134GEN_DFP_BF_A_B_300(dtstsfi, 0x03, 0x15),
    135GEN_DFP_BF_A_Bp_300(dtstsfiq, 0x03, 0x15),
    136GEN_DFP_TE_T_B_RMC_Rc(dquai, 0x03, 0x02),
    137GEN_DFP_TE_Tp_Bp_RMC_Rc(dquaiq, 0x03, 0x02),
    138GEN_DFP_T_A_B_RMC_Rc(dqua, 0x03, 0x00),
    139GEN_DFP_Tp_Ap_Bp_RMC_Rc(dquaq, 0x03, 0x00),
    140GEN_DFP_T_A_B_RMC_Rc(drrnd, 0x03, 0x01),
    141GEN_DFP_Tp_A_Bp_RMC_Rc(drrndq, 0x03, 0x01),
    142GEN_DFP_R_T_B_RMC_Rc(drintx, 0x03, 0x03),
    143GEN_DFP_R_Tp_Bp_RMC_Rc(drintxq, 0x03, 0x03),
    144GEN_DFP_R_T_B_RMC_Rc(drintn, 0x03, 0x07),
    145GEN_DFP_R_Tp_Bp_RMC_Rc(drintnq, 0x03, 0x07),
    146GEN_DFP_T_B_Rc(dctdp, 0x02, 0x08),
    147GEN_DFP_Tp_B_Rc(dctqpq, 0x02, 0x08),
    148GEN_DFP_T_B_Rc(drsp, 0x02, 0x18),
    149GEN_DFP_Tp_Bp_Rc(drdpq, 0x02, 0x18),
    150GEN_DFP_T_B_Rc(dcffix, 0x02, 0x19),
    151GEN_DFP_Tp_B_Rc(dcffixq, 0x02, 0x19),
    152GEN_DFP_T_B_Rc(dctfix, 0x02, 0x09),
    153GEN_DFP_T_Bp_Rc(dctfixq, 0x02, 0x09),
    154GEN_DFP_SP_T_B_Rc(ddedpd, 0x02, 0x0a),
    155GEN_DFP_SP_Tp_Bp_Rc(ddedpdq, 0x02, 0x0a),
    156GEN_DFP_S_T_B_Rc(denbcd, 0x02, 0x1a),
    157GEN_DFP_S_Tp_Bp_Rc(denbcdq, 0x02, 0x1a),
    158GEN_DFP_T_B_Rc(dxex, 0x02, 0x0b),
    159GEN_DFP_T_Bp_Rc(dxexq, 0x02, 0x0b),
    160GEN_DFP_T_A_B_Rc(diex, 0x02, 0x1b),
    161GEN_DFP_Tp_A_Bp_Rc(diexq, 0x02, 0x1b),
    162GEN_DFP_T_A_SH_Rc(dscli, 0x02, 0x02),
    163GEN_DFP_Tp_Ap_SH_Rc(dscliq, 0x02, 0x02),
    164GEN_DFP_T_A_SH_Rc(dscri, 0x02, 0x03),
    165GEN_DFP_Tp_Ap_SH_Rc(dscriq, 0x02, 0x03),