target/ppc: Remove support for the PowerPC 602 CPU
The 602 was derived from the PowerPC 603, for the gaming market it seems. It was hardly used and no firmware supporting the CPU could be found. Drop support. Signed-off-by: Cédric Le Goater <clg@kaod.org>
This commit is contained in:
parent
f82db77761
commit
4537d62dce
@ -428,8 +428,6 @@
|
||||
"PowerPC 601v1")
|
||||
POWERPC_DEF("601_v2", CPU_POWERPC_601_v2, 601v,
|
||||
"PowerPC 601v2")
|
||||
POWERPC_DEF("602", CPU_POWERPC_602, 602,
|
||||
"PowerPC 602")
|
||||
POWERPC_DEF("603", CPU_POWERPC_603, 603,
|
||||
"PowerPC 603")
|
||||
POWERPC_DEF("603e_v1.1", CPU_POWERPC_603E_v11, 603E,
|
||||
|
@ -208,7 +208,6 @@ enum {
|
||||
CPU_POWERPC_601_v0 = 0x00010001,
|
||||
CPU_POWERPC_601_v1 = 0x00010001,
|
||||
CPU_POWERPC_601_v2 = 0x00010002,
|
||||
CPU_POWERPC_602 = 0x00050100,
|
||||
CPU_POWERPC_603 = 0x00030100,
|
||||
CPU_POWERPC_603E_v11 = 0x00060101,
|
||||
CPU_POWERPC_603E_v12 = 0x00060102,
|
||||
|
@ -321,9 +321,7 @@ typedef enum {
|
||||
#define MSR_UCLE 26 /* User-mode cache lock enable for BookE */
|
||||
#define MSR_VR 25 /* altivec available x hflags */
|
||||
#define MSR_SPE 25 /* SPE enable for BookE x hflags */
|
||||
#define MSR_AP 23 /* Access privilege state on 602 hflags */
|
||||
#define MSR_VSX 23 /* Vector Scalar Extension (ISA 2.06 and later) x hflags */
|
||||
#define MSR_SA 22 /* Supervisor access mode on 602 hflags */
|
||||
#define MSR_S 22 /* Secure state */
|
||||
#define MSR_KEY 19 /* key bit on 603e */
|
||||
#define MSR_POW 18 /* Power management */
|
||||
@ -477,9 +475,7 @@ typedef enum {
|
||||
#define msr_ucle ((env->msr >> MSR_UCLE) & 1)
|
||||
#define msr_vr ((env->msr >> MSR_VR) & 1)
|
||||
#define msr_spe ((env->msr >> MSR_SPE) & 1)
|
||||
#define msr_ap ((env->msr >> MSR_AP) & 1)
|
||||
#define msr_vsx ((env->msr >> MSR_VSX) & 1)
|
||||
#define msr_sa ((env->msr >> MSR_SA) & 1)
|
||||
#define msr_key ((env->msr >> MSR_KEY) & 1)
|
||||
#define msr_pow ((env->msr >> MSR_POW) & 1)
|
||||
#define msr_tgpr ((env->msr >> MSR_TGPR) & 1)
|
||||
@ -2142,8 +2138,6 @@ enum {
|
||||
PPC_MFTB = 0x0000000000000200ULL,
|
||||
|
||||
/* Fixed-point unit extensions */
|
||||
/* PowerPC 602 specific */
|
||||
PPC_602_SPEC = 0x0000000000000400ULL,
|
||||
/* isel instruction */
|
||||
PPC_ISEL = 0x0000000000000800ULL,
|
||||
/* popcntb instruction */
|
||||
@ -2245,7 +2239,7 @@ enum {
|
||||
#define PPC_TCG_INSNS (PPC_INSNS_BASE | PPC_POWER | PPC_POWER2 \
|
||||
| PPC_POWER_RTC | PPC_POWER_BR | PPC_64B \
|
||||
| PPC_64BX | PPC_64H | PPC_WAIT | PPC_MFTB \
|
||||
| PPC_602_SPEC | PPC_ISEL | PPC_POPCNTB \
|
||||
| PPC_ISEL | PPC_POPCNTB \
|
||||
| PPC_STRING | PPC_FLOAT | PPC_FLOAT_EXT \
|
||||
| PPC_FLOAT_FSQRT | PPC_FLOAT_FRES \
|
||||
| PPC_FLOAT_FRSQRTE | PPC_FLOAT_FRSQRTES \
|
||||
|
@ -749,54 +749,6 @@ static void register_G2_sprs(CPUPPCState *env)
|
||||
0x00000000);
|
||||
}
|
||||
|
||||
/* SPR specific to PowerPC 602 implementation */
|
||||
static void register_602_sprs(CPUPPCState *env)
|
||||
{
|
||||
/* ESA registers */
|
||||
/* XXX : not implemented */
|
||||
spr_register(env, SPR_SER, "SER",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
0x00000000);
|
||||
/* XXX : not implemented */
|
||||
spr_register(env, SPR_SEBR, "SEBR",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
0x00000000);
|
||||
/* XXX : not implemented */
|
||||
spr_register(env, SPR_ESASRR, "ESASRR",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
0x00000000);
|
||||
/* Floating point status */
|
||||
/* XXX : not implemented */
|
||||
spr_register(env, SPR_SP, "SP",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
0x00000000);
|
||||
/* XXX : not implemented */
|
||||
spr_register(env, SPR_LT, "LT",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
0x00000000);
|
||||
/* Watchdog timer */
|
||||
/* XXX : not implemented */
|
||||
spr_register(env, SPR_TCR, "TCR",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
0x00000000);
|
||||
/* Interrupt base */
|
||||
spr_register(env, SPR_IBR, "IBR",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
0x00000000);
|
||||
/* XXX : not implemented */
|
||||
spr_register(env, SPR_IABR, "IABR",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
0x00000000);
|
||||
}
|
||||
|
||||
/* SPR specific to PowerPC 601 implementation */
|
||||
static void register_601_sprs(CPUPPCState *env)
|
||||
{
|
||||
@ -2128,33 +2080,6 @@ static void init_excp_601(CPUPPCState *env)
|
||||
#endif
|
||||
}
|
||||
|
||||
static void init_excp_602(CPUPPCState *env)
|
||||
{
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
/* XXX: exception prefix has a special behavior on 602 */
|
||||
env->excp_vectors[POWERPC_EXCP_RESET] = 0x00000100;
|
||||
env->excp_vectors[POWERPC_EXCP_MCHECK] = 0x00000200;
|
||||
env->excp_vectors[POWERPC_EXCP_DSI] = 0x00000300;
|
||||
env->excp_vectors[POWERPC_EXCP_ISI] = 0x00000400;
|
||||
env->excp_vectors[POWERPC_EXCP_EXTERNAL] = 0x00000500;
|
||||
env->excp_vectors[POWERPC_EXCP_ALIGN] = 0x00000600;
|
||||
env->excp_vectors[POWERPC_EXCP_PROGRAM] = 0x00000700;
|
||||
env->excp_vectors[POWERPC_EXCP_FPU] = 0x00000800;
|
||||
env->excp_vectors[POWERPC_EXCP_DECR] = 0x00000900;
|
||||
env->excp_vectors[POWERPC_EXCP_SYSCALL] = 0x00000C00;
|
||||
env->excp_vectors[POWERPC_EXCP_TRACE] = 0x00000D00;
|
||||
env->excp_vectors[POWERPC_EXCP_IFTLB] = 0x00001000;
|
||||
env->excp_vectors[POWERPC_EXCP_DLTLB] = 0x00001100;
|
||||
env->excp_vectors[POWERPC_EXCP_DSTLB] = 0x00001200;
|
||||
env->excp_vectors[POWERPC_EXCP_IABR] = 0x00001300;
|
||||
env->excp_vectors[POWERPC_EXCP_SMI] = 0x00001400;
|
||||
env->excp_vectors[POWERPC_EXCP_WDT] = 0x00001500;
|
||||
env->excp_vectors[POWERPC_EXCP_EMUL] = 0x00001600;
|
||||
/* Hardware reset vector */
|
||||
env->hreset_vector = 0x00000100UL;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void init_excp_603(CPUPPCState *env)
|
||||
{
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
@ -4081,76 +4006,6 @@ POWERPC_FAMILY(601v)(ObjectClass *oc, void *data)
|
||||
pcc->flags = POWERPC_FLAG_SE | POWERPC_FLAG_RTC_CLK | POWERPC_FLAG_HID0_LE;
|
||||
}
|
||||
|
||||
static void init_proc_602(CPUPPCState *env)
|
||||
{
|
||||
register_ne_601_sprs(env);
|
||||
register_sdr1_sprs(env);
|
||||
register_602_sprs(env);
|
||||
/* Time base */
|
||||
register_tbl(env);
|
||||
/* hardware implementation registers */
|
||||
/* XXX : not implemented */
|
||||
spr_register(env, SPR_HID0, "HID0",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
0x00000000);
|
||||
/* XXX : not implemented */
|
||||
spr_register(env, SPR_HID1, "HID1",
|
||||
SPR_NOACCESS, SPR_NOACCESS,
|
||||
&spr_read_generic, &spr_write_generic,
|
||||
0x00000000);
|
||||
/* Memory management */
|
||||
register_low_BATs(env);
|
||||
register_6xx_7xx_soft_tlb(env, 64, 2);
|
||||
init_excp_602(env);
|
||||
env->dcache_line_size = 32;
|
||||
env->icache_line_size = 32;
|
||||
/* Allocate hardware IRQ controller */
|
||||
ppc6xx_irq_init(env_archcpu(env));
|
||||
}
|
||||
|
||||
POWERPC_FAMILY(602)(ObjectClass *oc, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(oc);
|
||||
PowerPCCPUClass *pcc = POWERPC_CPU_CLASS(oc);
|
||||
|
||||
dc->desc = "PowerPC 602";
|
||||
pcc->init_proc = init_proc_602;
|
||||
pcc->check_pow = check_pow_hid0;
|
||||
pcc->insns_flags = PPC_INSNS_BASE | PPC_STRING | PPC_MFTB |
|
||||
PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES |
|
||||
PPC_FLOAT_FRSQRTE | PPC_FLOAT_STFIWX |
|
||||
PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ |
|
||||
PPC_MEM_SYNC | PPC_MEM_EIEIO |
|
||||
PPC_MEM_TLBIE | PPC_6xx_TLB | PPC_MEM_TLBSYNC |
|
||||
PPC_SEGMENT | PPC_602_SPEC;
|
||||
pcc->msr_mask = (1ull << MSR_VSX) |
|
||||
(1ull << MSR_SA) |
|
||||
(1ull << MSR_POW) |
|
||||
(1ull << MSR_TGPR) |
|
||||
(1ull << MSR_ILE) |
|
||||
(1ull << MSR_EE) |
|
||||
(1ull << MSR_PR) |
|
||||
(1ull << MSR_FP) |
|
||||
(1ull << MSR_ME) |
|
||||
(1ull << MSR_FE0) |
|
||||
(1ull << MSR_SE) |
|
||||
(1ull << MSR_DE) |
|
||||
(1ull << MSR_FE1) |
|
||||
(1ull << MSR_EP) |
|
||||
(1ull << MSR_IR) |
|
||||
(1ull << MSR_DR) |
|
||||
(1ull << MSR_RI) |
|
||||
(1ull << MSR_LE);
|
||||
/* XXX: 602 MMU is quite specific. Should add a special case */
|
||||
pcc->mmu_model = POWERPC_MMU_SOFT_6xx;
|
||||
pcc->excp_model = POWERPC_EXCP_602;
|
||||
pcc->bus_model = PPC_FLAGS_INPUT_6xx;
|
||||
pcc->bfd_mach = bfd_mach_ppc_602;
|
||||
pcc->flags = POWERPC_FLAG_TGPR | POWERPC_FLAG_SE |
|
||||
POWERPC_FLAG_BE | POWERPC_FLAG_BUS_CLK;
|
||||
}
|
||||
|
||||
static void init_proc_603(CPUPPCState *env)
|
||||
{
|
||||
register_ne_601_sprs(env);
|
||||
@ -8271,8 +8126,6 @@ static void ppc_cpu_reset(DeviceState *dev)
|
||||
|
||||
msr = (target_ulong)0;
|
||||
msr |= (target_ulong)MSR_HVB;
|
||||
msr |= (target_ulong)0 << MSR_AP; /* TO BE CHECKED */
|
||||
msr |= (target_ulong)0 << MSR_SA; /* TO BE CHECKED */
|
||||
msr |= (target_ulong)1 << MSR_EP;
|
||||
#if defined(DO_SINGLE_STEP) && 0
|
||||
/* Single step trace mode */
|
||||
|
@ -1422,7 +1422,6 @@ static inline void powerpc_excp_legacy(PowerPCCPU *cpu, int excp)
|
||||
case POWERPC_EXCP_DLTLB: /* Data load TLB miss */
|
||||
case POWERPC_EXCP_DSTLB: /* Data store TLB miss */
|
||||
switch (excp_model) {
|
||||
case POWERPC_EXCP_602:
|
||||
case POWERPC_EXCP_603:
|
||||
case POWERPC_EXCP_G2:
|
||||
/* Swap temporary saved registers with GPRs */
|
||||
|
@ -646,7 +646,6 @@ DEF_HELPER_FLAGS_2(slbieg, TCG_CALL_NO_RWG, void, env, tl)
|
||||
DEF_HELPER_FLAGS_2(load_sr, TCG_CALL_NO_RWG, tl, env, tl)
|
||||
DEF_HELPER_FLAGS_3(store_sr, TCG_CALL_NO_RWG, void, env, tl, tl)
|
||||
|
||||
DEF_HELPER_FLAGS_1(602_mfrom, TCG_CALL_NO_RWG_SE, tl, tl)
|
||||
DEF_HELPER_1(msgsnd, void, tl)
|
||||
DEF_HELPER_2(msgclr, void, env, tl)
|
||||
DEF_HELPER_1(book3s_msgsnd, void, tl)
|
||||
|
@ -488,27 +488,6 @@ target_ulong helper_divso(CPUPPCState *env, target_ulong arg1,
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/* 602 specific instructions */
|
||||
/* mfrom is the most crazy instruction ever seen, imho ! */
|
||||
/* Real implementation uses a ROM table. Do the same */
|
||||
/*
|
||||
* Extremely decomposed:
|
||||
* -arg / 256
|
||||
* return 256 * log10(10 + 1.0) + 0.5
|
||||
*/
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
target_ulong helper_602_mfrom(target_ulong arg)
|
||||
{
|
||||
if (likely(arg < 602)) {
|
||||
#include "mfrom_table.c.inc"
|
||||
return mfrom_ROM_table[arg];
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Altivec extension helpers */
|
||||
#if defined(HOST_WORDS_BIGENDIAN)
|
||||
|
@ -1,78 +0,0 @@
|
||||
static const uint8_t mfrom_ROM_table[602] = {
|
||||
77, 77, 76, 76, 75, 75, 74, 74,
|
||||
73, 73, 72, 72, 71, 71, 70, 70,
|
||||
69, 69, 68, 68, 68, 67, 67, 66,
|
||||
66, 65, 65, 64, 64, 64, 63, 63,
|
||||
62, 62, 61, 61, 61, 60, 60, 59,
|
||||
59, 58, 58, 58, 57, 57, 56, 56,
|
||||
56, 55, 55, 54, 54, 54, 53, 53,
|
||||
53, 52, 52, 51, 51, 51, 50, 50,
|
||||
50, 49, 49, 49, 48, 48, 47, 47,
|
||||
47, 46, 46, 46, 45, 45, 45, 44,
|
||||
44, 44, 43, 43, 43, 42, 42, 42,
|
||||
42, 41, 41, 41, 40, 40, 40, 39,
|
||||
39, 39, 39, 38, 38, 38, 37, 37,
|
||||
37, 37, 36, 36, 36, 35, 35, 35,
|
||||
35, 34, 34, 34, 34, 33, 33, 33,
|
||||
33, 32, 32, 32, 32, 31, 31, 31,
|
||||
31, 30, 30, 30, 30, 29, 29, 29,
|
||||
29, 28, 28, 28, 28, 28, 27, 27,
|
||||
27, 27, 26, 26, 26, 26, 26, 25,
|
||||
25, 25, 25, 25, 24, 24, 24, 24,
|
||||
24, 23, 23, 23, 23, 23, 23, 22,
|
||||
22, 22, 22, 22, 21, 21, 21, 21,
|
||||
21, 21, 20, 20, 20, 20, 20, 20,
|
||||
19, 19, 19, 19, 19, 19, 19, 18,
|
||||
18, 18, 18, 18, 18, 17, 17, 17,
|
||||
17, 17, 17, 17, 16, 16, 16, 16,
|
||||
16, 16, 16, 16, 15, 15, 15, 15,
|
||||
15, 15, 15, 15, 14, 14, 14, 14,
|
||||
14, 14, 14, 14, 13, 13, 13, 13,
|
||||
13, 13, 13, 13, 13, 12, 12, 12,
|
||||
12, 12, 12, 12, 12, 12, 12, 11,
|
||||
11, 11, 11, 11, 11, 11, 11, 11,
|
||||
11, 11, 10, 10, 10, 10, 10, 10,
|
||||
10, 10, 10, 10, 10, 9, 9, 9,
|
||||
9, 9, 9, 9, 9, 9, 9, 9,
|
||||
9, 9, 8, 8, 8, 8, 8, 8,
|
||||
8, 8, 8, 8, 8, 8, 8, 8,
|
||||
7, 7, 7, 7, 7, 7, 7, 7,
|
||||
7, 7, 7, 7, 7, 7, 7, 7,
|
||||
7, 6, 6, 6, 6, 6, 6, 6,
|
||||
6, 6, 6, 6, 6, 6, 6, 6,
|
||||
6, 6, 6, 6, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 3,
|
||||
3, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3, 3, 3, 3, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 0,
|
||||
};
|
@ -1,34 +0,0 @@
|
||||
#define _GNU_SOURCE
|
||||
#include "qemu/osdep.h"
|
||||
#include <math.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
double d;
|
||||
uint8_t n;
|
||||
int i;
|
||||
|
||||
printf("static const uint8_t mfrom_ROM_table[602] =\n{\n ");
|
||||
for (i = 0; i < 602; i++) {
|
||||
/*
|
||||
* Extremely decomposed:
|
||||
* -T0 / 256
|
||||
* T0 = 256 * log10(10 + 1.0) + 0.5
|
||||
*/
|
||||
d = -i;
|
||||
d /= 256.0;
|
||||
d = exp10(d);
|
||||
d += 1.0;
|
||||
d = log10(d);
|
||||
d *= 256;
|
||||
d += 0.5;
|
||||
n = d;
|
||||
printf("%3d, ", n);
|
||||
if ((i & 7) == 7) {
|
||||
printf("\n ");
|
||||
}
|
||||
}
|
||||
printf("\n};\n");
|
||||
|
||||
return 0;
|
||||
}
|
@ -6272,33 +6272,6 @@ static void gen_srq(DisasContext *ctx)
|
||||
}
|
||||
}
|
||||
|
||||
/* PowerPC 602 specific instructions */
|
||||
|
||||
/* dsa */
|
||||
static void gen_dsa(DisasContext *ctx)
|
||||
{
|
||||
/* XXX: TODO */
|
||||
gen_inval_exception(ctx, POWERPC_EXCP_INVAL_INVAL);
|
||||
}
|
||||
|
||||
/* esa */
|
||||
static void gen_esa(DisasContext *ctx)
|
||||
{
|
||||
/* XXX: TODO */
|
||||
gen_inval_exception(ctx, POWERPC_EXCP_INVAL_INVAL);
|
||||
}
|
||||
|
||||
/* mfrom */
|
||||
static void gen_mfrom(DisasContext *ctx)
|
||||
{
|
||||
#if defined(CONFIG_USER_ONLY)
|
||||
GEN_PRIV;
|
||||
#else
|
||||
CHK_SV;
|
||||
gen_helper_602_mfrom(cpu_gpr[rD(ctx->opcode)], cpu_gpr[rA(ctx->opcode)]);
|
||||
#endif /* defined(CONFIG_USER_ONLY) */
|
||||
}
|
||||
|
||||
/* 602 - 603 - G2 TLB management */
|
||||
|
||||
/* tlbld */
|
||||
@ -7779,9 +7752,6 @@ GEN_HANDLER(sriq, 0x1F, 0x18, 0x15, 0x00000000, PPC_POWER_BR),
|
||||
GEN_HANDLER(srliq, 0x1F, 0x18, 0x17, 0x00000000, PPC_POWER_BR),
|
||||
GEN_HANDLER(srlq, 0x1F, 0x18, 0x16, 0x00000000, PPC_POWER_BR),
|
||||
GEN_HANDLER(srq, 0x1F, 0x18, 0x14, 0x00000000, PPC_POWER_BR),
|
||||
GEN_HANDLER(dsa, 0x1F, 0x14, 0x13, 0x03FFF801, PPC_602_SPEC),
|
||||
GEN_HANDLER(esa, 0x1F, 0x14, 0x12, 0x03FFF801, PPC_602_SPEC),
|
||||
GEN_HANDLER(mfrom, 0x1F, 0x09, 0x08, 0x03E0F801, PPC_602_SPEC),
|
||||
GEN_HANDLER2(tlbld_6xx, "tlbld", 0x1F, 0x12, 0x1E, 0x03FF0001, PPC_6xx_TLB),
|
||||
GEN_HANDLER2(tlbli_6xx, "tlbli", 0x1F, 0x12, 0x1F, 0x03FF0001, PPC_6xx_TLB),
|
||||
GEN_HANDLER(clf, 0x1F, 0x16, 0x03, 0x03E00000, PPC_POWER),
|
||||
|
Loading…
Reference in New Issue
Block a user