trunk/3rdparty/sqlite3/sqlite3.h
| r243259 | r243260 | |
| 256 | 256 | typedef sqlite_int64 sqlite3_int64; |
| 257 | 257 | typedef sqlite_uint64 sqlite3_uint64; |
| 258 | 258 | |
| 259 | /* pointer-sized values */ |
| 260 | #ifdef PTR64 |
| 261 | typedef sqlite3_uint64 FPTR; |
| 262 | #else |
| 263 | typedef unsigned int FPTR; |
| 264 | #endif |
| 265 | |
| 259 | 266 | /* |
| 260 | 267 | ** If compiling for a processor that lacks floating point support, |
| 261 | 268 | ** substitute integer for floating-point. |
| r243259 | r243260 | |
| 4382 | 4389 | */ |
| 4383 | 4390 | typedef void (*sqlite3_destructor_type)(void*); |
| 4384 | 4391 | #define SQLITE_STATIC ((sqlite3_destructor_type)0) |
| 4385 | | #define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1) |
| 4392 | #define SQLITE_TRANSIENT ((sqlite3_destructor_type)(FPTR)-1) |
| 4386 | 4393 | |
| 4387 | 4394 | /* |
| 4388 | 4395 | ** CAPI3REF: Setting The Result Of An SQL Function |
trunk/src/emu/cpu/amis2000/amis2000.c
| r243259 | r243260 | |
| 134 | 134 | // zerofill |
| 135 | 135 | memset(m_callstack, 0, sizeof(m_callstack)); |
| 136 | 136 | m_pc = 0; |
| 137 | m_ppr = 0; |
| 138 | m_pbr = 0; |
| 139 | m_pp_index = 0; |
| 137 | 140 | m_skip = false; |
| 138 | 141 | m_op = 0; |
| 139 | 142 | m_f = 0; |
| r243259 | r243260 | |
| 148 | 151 | // register for savestates |
| 149 | 152 | save_item(NAME(m_callstack)); |
| 150 | 153 | save_item(NAME(m_pc)); |
| 154 | save_item(NAME(m_ppr)); |
| 155 | save_item(NAME(m_pbr)); |
| 156 | save_item(NAME(m_pp_index)); |
| 151 | 157 | save_item(NAME(m_skip)); |
| 152 | 158 | save_item(NAME(m_op)); |
| 153 | 159 | save_item(NAME(m_f)); |
| r243259 | r243260 | |
| 182 | 188 | void amis2000_device::device_reset() |
| 183 | 189 | { |
| 184 | 190 | m_pc = 0; |
| 191 | m_skip = false; |
| 192 | m_op = 0; |
| 185 | 193 | } |
| 186 | 194 | |
| 187 | 195 | |
| r243259 | r243260 | |
| 197 | 205 | while (m_icount > 0) |
| 198 | 206 | { |
| 199 | 207 | m_icount--; |
| 208 | |
| 209 | // increase PP prefix count |
| 210 | if ((m_op & 0xf0) == 0x60) |
| 211 | { |
| 212 | if (m_pp_index < 2) |
| 213 | m_pp_index++; |
| 214 | } |
| 215 | else |
| 216 | m_pp_index = 0; |
| 200 | 217 | |
| 201 | 218 | debugger_instruction_hook(this, m_pc); |
| 202 | 219 | m_op = m_program->read_byte(m_pc); |
trunk/src/emu/cpu/amis2000/amis2000.h
| r243259 | r243260 | |
| 72 | 72 | |
| 73 | 73 | UINT8 m_bu_bits; |
| 74 | 74 | UINT16 m_bu_mask; |
| 75 | | UINT8 m_callstack_bits; |
| 75 | UINT8 m_callstack_bits; // number of program counter bits held in callstack |
| 76 | 76 | UINT16 m_callstack_mask; |
| 77 | 77 | UINT8 m_callstack_depth; // callstack levels: 3 on 2000/2150, 5 on 2200/2400 |
| 78 | 78 | UINT16 m_callstack[5]; // max 5 |
| 79 | 79 | |
| 80 | | UINT16 m_pc; |
| 81 | | bool m_skip; |
| 80 | UINT16 m_pc; // 13-bit program counter |
| 81 | UINT8 m_ppr; // prepared page register (PP 1) |
| 82 | UINT8 m_pbr; // prepared bank register (PP 2) |
| 83 | UINT8 m_pp_index; // number of handled PP prefixes |
| 84 | bool m_skip; // skip next opcode, including PP prefixes |
| 82 | 85 | UINT8 m_op; |
| 83 | 86 | UINT8 m_f; // generic flags: 2 on 2000/2150, 6 on 2200/2400 |
| 84 | 87 | UINT8 m_carry; // carry flag |
| r243259 | r243260 | |
| 99 | 102 | |
| 100 | 103 | UINT8 ram_r(); |
| 101 | 104 | void ram_w(UINT8 data); |
| 105 | void pop_callstack(); |
| 106 | void push_callstack(); |
| 102 | 107 | void op_illegal(); |
| 103 | 108 | |
| 104 | 109 | void op_lai(); |
trunk/src/emu/cpu/amis2000/amis2000op.inc
| r243259 | r243260 | |
| 14 | 14 | m_data->write_byte(address, data & 0xf); |
| 15 | 15 | } |
| 16 | 16 | |
| 17 | void amis2000_device::pop_callstack() |
| 18 | { |
| 19 | m_pc = (m_pc & ~m_callstack_mask) | (m_callstack[0] & m_callstack_mask); |
| 20 | for (int i = 0; i < m_callstack_depth-1; i++) |
| 21 | { |
| 22 | m_callstack[i] = m_callstack[i+1]; |
| 23 | m_callstack[i+1] = 0; |
| 24 | } |
| 25 | } |
| 26 | |
| 27 | void amis2000_device::push_callstack() |
| 28 | { |
| 29 | for (int i = m_callstack_depth-1; i >= 1; i--) |
| 30 | { |
| 31 | m_callstack[i] = m_callstack[i-1]; |
| 32 | } |
| 33 | m_callstack[0] = m_pc & m_callstack_mask; |
| 34 | } |
| 35 | |
| 17 | 36 | void amis2000_device::op_illegal() |
| 18 | 37 | { |
| 19 | 38 | logerror("%s unknown opcode $%02X at $%04X\n", tag(), m_op, m_pc); |
| r243259 | r243260 | |
| 207 | 226 | void amis2000_device::op_pp() |
| 208 | 227 | { |
| 209 | 228 | // PP _X: prepare page/bank with _X |
| 210 | | op_illegal(); |
| 229 | UINT8 param = ~m_op & 0x0f; |
| 230 | if (m_pp_index == 0) |
| 231 | m_ppr = param; |
| 232 | else |
| 233 | m_pbr = param & 7; |
| 211 | 234 | } |
| 212 | 235 | |
| 213 | 236 | void amis2000_device::op_jmp() |
| 214 | 237 | { |
| 215 | 238 | // JMP X: jump to X(+PP) |
| 216 | | op_illegal(); |
| 239 | UINT16 mask = 0x3f; |
| 240 | UINT16 param = m_op & mask; |
| 241 | if (m_pp_index > 0) |
| 242 | { |
| 243 | param |= m_ppr << 6; |
| 244 | mask |= 0x3c0; |
| 245 | } |
| 246 | if (m_pp_index > 1) |
| 247 | { |
| 248 | param |= m_pbr << 10; |
| 249 | mask |= 0x1c00; |
| 250 | } |
| 251 | m_pc = (m_pc & ~mask) | param; |
| 217 | 252 | } |
| 218 | 253 | |
| 219 | 254 | void amis2000_device::op_jms() |
| 220 | 255 | { |
| 221 | 256 | // JMS X: call to X(+PP) |
| 222 | | op_illegal(); |
| 257 | m_icount--; |
| 258 | push_callstack(); |
| 259 | if (m_pp_index == 0) |
| 260 | { |
| 261 | // subroutines default location is page 15 |
| 262 | m_ppr = 0xf; |
| 263 | m_pp_index++; |
| 264 | } |
| 265 | op_jmp(); |
| 223 | 266 | } |
| 224 | 267 | |
| 225 | 268 | void amis2000_device::op_rt() |
| 226 | 269 | { |
| 227 | 270 | // RT: return from subroutine |
| 228 | | op_illegal(); |
| 271 | pop_callstack(); |
| 229 | 272 | } |
| 230 | 273 | |
| 231 | 274 | void amis2000_device::op_rts() |
| 232 | 275 | { |
| 233 | 276 | // RTS: return from subroutine and skip next |
| 234 | | op_illegal(); |
| 277 | op_rt(); |
| 278 | m_skip = true; |
| 235 | 279 | } |
| 236 | 280 | |
| 237 | 281 | void amis2000_device::op_nop() |
trunk/src/emu/cpu/drcbex64.h
| r243259 | r243260 | |
| 73 | 73 | static inline be_parameter make_ireg(int regnum) { assert(regnum >= 0 && regnum < x64emit::REG_MAX); return be_parameter(PTYPE_INT_REGISTER, regnum); } |
| 74 | 74 | static inline be_parameter make_freg(int regnum) { assert(regnum >= 0 && regnum < x64emit::REG_MAX); return be_parameter(PTYPE_FLOAT_REGISTER, regnum); } |
| 75 | 75 | static inline be_parameter make_vreg(int regnum) { assert(regnum >= 0 && regnum < x64emit::REG_MAX); return be_parameter(PTYPE_VECTOR_REGISTER, regnum); } |
| 76 | | static inline be_parameter make_memory(void *base) { return be_parameter(PTYPE_MEMORY, reinterpret_cast<be_parameter_value>(base)); } |
| 77 | | static inline be_parameter make_memory(const void *base) { return be_parameter(PTYPE_MEMORY, reinterpret_cast<be_parameter_value>(const_cast<void *>(base))); } |
| 76 | static inline be_parameter make_memory(void *base) { return be_parameter(PTYPE_MEMORY, static_cast<be_parameter_value>(reinterpret_cast<FPTR>(base))); } |
| 77 | static inline be_parameter make_memory(const void *base) { return be_parameter(PTYPE_MEMORY, static_cast<be_parameter_value>(reinterpret_cast<FPTR>(const_cast<void *>(base)))); } |
| 78 | 78 | |
| 79 | 79 | // operators |
| 80 | 80 | bool operator==(const be_parameter &rhs) const { return (m_type == rhs.m_type && m_value == rhs.m_value); } |
trunk/src/emu/cpu/drcbex86.h
| r243259 | r243260 | |
| 73 | 73 | static inline be_parameter make_ireg(int regnum) { assert(regnum >= 0 && regnum < x86emit::REG_MAX); return be_parameter(PTYPE_INT_REGISTER, regnum); } |
| 74 | 74 | static inline be_parameter make_freg(int regnum) { assert(regnum >= 0 && regnum < x86emit::REG_MAX); return be_parameter(PTYPE_FLOAT_REGISTER, regnum); } |
| 75 | 75 | static inline be_parameter make_vreg(int regnum) { assert(regnum >= 0 && regnum < x86emit::REG_MAX); return be_parameter(PTYPE_VECTOR_REGISTER, regnum); } |
| 76 | | static inline be_parameter make_memory(void *base) { return be_parameter(PTYPE_MEMORY, reinterpret_cast<be_parameter_value>(base)); } |
| 77 | | static inline be_parameter make_memory(const void *base) { return be_parameter(PTYPE_MEMORY, reinterpret_cast<be_parameter_value>(const_cast<void *>(base))); } |
| 76 | static inline be_parameter make_memory(void *base) { return be_parameter(PTYPE_MEMORY, static_cast<be_parameter_value>(reinterpret_cast<FPTR>(base))); } |
| 77 | static inline be_parameter make_memory(const void *base) { return be_parameter(PTYPE_MEMORY, static_cast<be_parameter_value>(reinterpret_cast<FPTR>(const_cast<void *>(base)))); } |
| 78 | 78 | |
| 79 | 79 | // operators |
| 80 | 80 | bool operator==(const be_parameter &rhs) const { return (m_type == rhs.m_type && m_value == rhs.m_value); } |
trunk/src/emu/cpu/uml.h
| r243259 | r243260 | |
| 305 | 305 | parameter(UINT64 val) : m_type(PTYPE_IMMEDIATE), m_value(val) { } |
| 306 | 306 | parameter(operand_size size, memory_scale scale) : m_type(PTYPE_SIZE_SCALE), m_value((scale << 4) | size) { assert(size >= SIZE_BYTE && size <= SIZE_DQWORD); assert(scale >= SCALE_x1 && scale <= SCALE_x8); } |
| 307 | 307 | parameter(operand_size size, memory_space space) : m_type(PTYPE_SIZE_SPACE), m_value((space << 4) | size) { assert(size >= SIZE_BYTE && size <= SIZE_DQWORD); assert(space >= SPACE_PROGRAM && space <= SPACE_IO); } |
| 308 | | parameter(code_handle &handle) : m_type(PTYPE_CODE_HANDLE), m_value(reinterpret_cast<parameter_value>(&handle)) { } |
| 308 | parameter(code_handle &handle) : m_type(PTYPE_CODE_HANDLE), m_value(static_cast<parameter_value>(reinterpret_cast<FPTR>(&handle))) { } |
| 309 | 309 | parameter(code_label &label) : m_type(PTYPE_CODE_LABEL), m_value(label) { } |
| 310 | 310 | |
| 311 | 311 | // creators for types that don't safely default |
| r243259 | r243260 | |
| 313 | 313 | static inline parameter make_freg(int regnum) { assert(regnum >= REG_F0 && regnum < REG_F_END); return parameter(PTYPE_FLOAT_REGISTER, regnum); } |
| 314 | 314 | static inline parameter make_vreg(int regnum) { assert(regnum >= REG_V0 && regnum < REG_V_END); return parameter(PTYPE_VECTOR_REGISTER, regnum); } |
| 315 | 315 | static inline parameter make_mapvar(int mvnum) { assert(mvnum >= MAPVAR_M0 && mvnum < MAPVAR_END); return parameter(PTYPE_MAPVAR, mvnum); } |
| 316 | | static inline parameter make_memory(void *base) { return parameter(PTYPE_MEMORY, reinterpret_cast<parameter_value>(base)); } |
| 317 | | static inline parameter make_memory(const void *base) { return parameter(PTYPE_MEMORY, reinterpret_cast<parameter_value>(const_cast<void *>(base))); } |
| 316 | static inline parameter make_memory(void *base) { return parameter(PTYPE_MEMORY, static_cast<parameter_value>(reinterpret_cast<FPTR>(base))); } |
| 317 | static inline parameter make_memory(const void *base) { return parameter(PTYPE_MEMORY, static_cast<parameter_value>(reinterpret_cast<FPTR>(const_cast<void *>(base)))); } |
| 318 | 318 | static inline parameter make_size(operand_size size) { assert(size >= SIZE_BYTE && size <= SIZE_DQWORD); return parameter(PTYPE_SIZE, size); } |
| 319 | | static inline parameter make_string(const char *string) { return parameter(PTYPE_STRING, reinterpret_cast<parameter_value>(const_cast<char *>(string))); } |
| 320 | | static inline parameter make_cfunc(c_function func) { return parameter(PTYPE_C_FUNCTION, reinterpret_cast<parameter_value>(func)); } |
| 319 | static inline parameter make_string(const char *string) { return parameter(PTYPE_STRING, static_cast<parameter_value>(reinterpret_cast<FPTR>(const_cast<char *>(string)))); } |
| 320 | static inline parameter make_cfunc(c_function func) { return parameter(PTYPE_C_FUNCTION, static_cast<parameter_value>(reinterpret_cast<FPTR>(func))); } |
| 321 | 321 | static inline parameter make_rounding(float_rounding_mode mode) { assert(mode >= ROUND_TRUNC && mode <= ROUND_DEFAULT); return parameter(PTYPE_ROUNDING, mode); } |
| 322 | 322 | |
| 323 | 323 | // operators |