1 // license:BSD-3-Clause 2 // copyright-holders:smf 3 #ifndef MAME_CPU_PSX_PSXDEFS_H 4 #define MAME_CPU_PSX_PSXDEFS_H 5 6 #pragma once 7 8 9 #define PSXCPU_BYTE_EXTEND( a ) ( (int32_t)(int8_t)a ) 10 #define PSXCPU_WORD_EXTEND( a ) ( (int32_t)(int16_t)a ) 11 12 #define INS_OP( op ) ( ( op >> 26 ) & 63 ) 13 #define INS_RS( op ) ( ( op >> 21 ) & 31 ) 14 #define INS_RT( op ) ( ( op >> 16 ) & 31 ) 15 #define INS_IMMEDIATE( op ) ( op & 0xffff ) 16 #define INS_TARGET( op ) ( op & 0x3ffffff ) 17 #define INS_RD( op ) ( ( op >> 11 ) & 31 ) 18 #define INS_SHAMT( op ) ( ( op >> 6 ) & 31 ) 19 #define INS_FUNCT( op ) ( op & 63 ) 20 #define INS_CODE( op ) ( ( op >> 6 ) & 0xfffff ) 21 #define INS_CO( op ) ( ( op >> 25 ) & 1 ) 22 #define INS_COFUN( op ) ( op & 0x1ffffff ) 23 #define INS_CF( op ) ( op & 31 ) 24 #define INS_BC( op ) ( ( op >> 16 ) & 1 ) 25 #define INS_RT_REGIMM( op ) ( ( op >> 16 ) & 1 ) 26 27 #define OP_SPECIAL ( 0 ) 28 #define OP_REGIMM ( 1 ) 29 #define OP_J ( 2 ) 30 #define OP_JAL ( 3 ) 31 #define OP_BEQ ( 4 ) 32 #define OP_BNE ( 5 ) 33 #define OP_BLEZ ( 6 ) 34 #define OP_BGTZ ( 7 ) 35 #define OP_ADDI ( 8 ) 36 #define OP_ADDIU ( 9 ) 37 #define OP_SLTI ( 10 ) 38 #define OP_SLTIU ( 11 ) 39 #define OP_ANDI ( 12 ) 40 #define OP_ORI ( 13 ) 41 #define OP_XORI ( 14 ) 42 #define OP_LUI ( 15 ) 43 #define OP_COP0 ( 16 ) 44 #define OP_COP1 ( 17 ) 45 #define OP_COP2 ( 18 ) 46 #define OP_COP3 ( 19 ) 47 #define OP_LB ( 32 ) 48 #define OP_LH ( 33 ) 49 #define OP_LWL ( 34 ) 50 #define OP_LW ( 35 ) 51 #define OP_LBU ( 36 ) 52 #define OP_LHU ( 37 ) 53 #define OP_LWR ( 38 ) 54 #define OP_SB ( 40 ) 55 #define OP_SH ( 41 ) 56 #define OP_SWL ( 42 ) 57 #define OP_SW ( 43 ) 58 #define OP_SWR ( 46 ) 59 #define OP_LWC0 ( 48 ) 60 #define OP_LWC1 ( 49 ) 61 #define OP_LWC2 ( 50 ) 62 #define OP_LWC3 ( 51 ) 63 #define OP_SWC0 ( 56 ) 64 #define OP_SWC1 ( 57 ) 65 #define OP_SWC2 ( 58 ) 66 #define OP_SWC3 ( 59 ) 67 68 /* OP_SPECIAL */ 69 #define FUNCT_SLL ( 0 ) 70 #define FUNCT_SRL ( 2 ) 71 #define FUNCT_SRA ( 3 ) 72 #define FUNCT_SLLV ( 4 ) 73 #define FUNCT_SRLV ( 6 ) 74 #define FUNCT_SRAV ( 7 ) 75 #define FUNCT_JR ( 8 ) 76 #define FUNCT_JALR ( 9 ) 77 #define FUNCT_SYSCALL ( 12 ) 78 #define FUNCT_BREAK ( 13 ) 79 #define FUNCT_MFHI ( 16 ) 80 #define FUNCT_MTHI ( 17 ) 81 #define FUNCT_MFLO ( 18 ) 82 #define FUNCT_MTLO ( 19 ) 83 #define FUNCT_MULT ( 24 ) 84 #define FUNCT_MULTU ( 25 ) 85 #define FUNCT_DIV ( 26 ) 86 #define FUNCT_DIVU ( 27 ) 87 #define FUNCT_ADD ( 32 ) 88 #define FUNCT_ADDU ( 33 ) 89 #define FUNCT_SUB ( 34 ) 90 #define FUNCT_SUBU ( 35 ) 91 #define FUNCT_AND ( 36 ) 92 #define FUNCT_OR ( 37 ) 93 #define FUNCT_XOR ( 38 ) 94 #define FUNCT_NOR ( 39 ) 95 #define FUNCT_SLT ( 42 ) 96 #define FUNCT_SLTU ( 43 ) 97 98 /* OP_REGIMM */ 99 #define RT_BLTZ ( 0 ) 100 #define RT_BGEZ ( 1 ) 101 #define RT_BLTZAL ( 16 ) 102 #define RT_BGEZAL ( 17 ) 103 104 /* OP_COP0/OP_COP1/OP_COP2 */ 105 #define RS_MFC ( 0 ) 106 #define RS_CFC ( 2 ) 107 #define RS_MTC ( 4 ) 108 #define RS_CTC ( 6 ) 109 #define RS_BC ( 8 ) 110 #define RS_BC_ALT ( 12 ) 111 112 /* BC_BC */ 113 #define BC_BCF ( 0 ) 114 #define BC_BCT ( 1 ) 115 116 /* OP_COP0 */ 117 #define CF_TLBR ( 1 ) 118 #define CF_TLBWI ( 2 ) 119 #define CF_TLBWR ( 6 ) 120 #define CF_TLBP ( 8 ) 121 #define CF_RFE ( 16 ) 122 123 #endif // MAME_CPU_PSX_PSXDEFS_H 124