Revision b48cfdff
b/target-mips/mips-defs.h | ||
---|---|---|
19 | 19 |
#define TARGET_LONG_BITS 32 |
20 | 20 |
#endif |
21 | 21 |
|
22 |
/* Strictly follow the architecture standard: Disallow "special" |
|
23 |
instruction handling for PMON/SPIM, force cycle-dependent |
|
24 |
Count/Compare maintenance. */ |
|
25 |
//#define MIPS_STRICT_STANDARD 1 |
|
26 |
|
|
22 | 27 |
#endif /* !defined (__QEMU_MIPS_DEFS_H__) */ |
b/target-mips/translate.c | ||
---|---|---|
305 | 305 |
}; |
306 | 306 |
|
307 | 307 |
/* MFMC0 opcodes */ |
308 |
#define MASK_MFMC0(op) MASK_CP0(op) | (op & ((0x0C << 11) | (1 << 5)))
|
|
308 |
#define MASK_MFMC0(op) MASK_CP0(op) | (op & 0xFFFF)
|
|
309 | 309 |
|
310 | 310 |
enum { |
311 | 311 |
OPC_DI = (0 << 5) | (0x0C << 11) | OPC_MFMC0, |
... | ... | |
4715 | 4715 |
case OPC_MTLO: /* Move to HI/LO */ |
4716 | 4716 |
gen_HILO(ctx, op1, rs); |
4717 | 4717 |
break; |
4718 |
case OPC_PMON: /* Pmon entry point */ |
|
4718 |
case OPC_PMON: /* Pmon entry point, also R4010 selsl */ |
|
4719 |
#ifdef MIPS_STRICT_STANDARD |
|
4720 |
MIPS_INVAL("PMON / selsl"); |
|
4721 |
generate_exception(ctx, EXCP_RI); |
|
4722 |
#else |
|
4719 | 4723 |
gen_op_pmon(sa); |
4724 |
#endif |
|
4720 | 4725 |
break; |
4721 | 4726 |
case OPC_SYSCALL: |
4722 | 4727 |
generate_exception(ctx, EXCP_SYSCALL); |
... | ... | |
4724 | 4729 |
case OPC_BREAK: |
4725 | 4730 |
generate_exception(ctx, EXCP_BREAK); |
4726 | 4731 |
break; |
4727 |
case OPC_SPIM: /* SPIM ? */ |
|
4732 |
case OPC_SPIM: |
|
4733 |
#ifdef MIPS_STRICT_STANDARD |
|
4734 |
MIPS_INVAL("SPIM"); |
|
4735 |
generate_exception(ctx, EXCP_RI); |
|
4736 |
#else |
|
4728 | 4737 |
/* Implemented as RI exception for now. */ |
4729 | 4738 |
MIPS_INVAL("spim (unofficial)"); |
4730 | 4739 |
generate_exception(ctx, EXCP_RI); |
4740 |
#endif |
|
4731 | 4741 |
break; |
4732 | 4742 |
case OPC_SYNC: |
4733 | 4743 |
/* Treat as a noop. */ |
Also available in: Unified diff