diff --git a/hw/xbox/dsp/dsp.c b/hw/xbox/dsp/dsp.c index ce576ecd78..7a59a0bfd8 100644 --- a/hw/xbox/dsp/dsp.c +++ b/hw/xbox/dsp/dsp.c @@ -312,189 +312,8 @@ void dsp_print_registers(DSPState* dsp) i, dsp->core.registers[DSP_REG_M0+i]); } - printf("LA: %04x LC: %04x PC: %04x\n", dsp->core.registers[DSP_REG_LA], dsp->core.registers[DSP_REG_LC], dsp->core.pc); - printf("SR: %04x OMR: %02x\n", dsp->core.registers[DSP_REG_SR], dsp->core.registers[DSP_REG_OMR]); - printf("SP: %02x SSH: %04x SSL: %04x\n", + printf("LA: %04x LC: %04x PC: %04x\n", dsp->core.registers[DSP_REG_LA], dsp->core.registers[DSP_REG_LC], dsp->core.pc); + printf("SR: %06x OMR: %02x\n", dsp->core.registers[DSP_REG_SR], dsp->core.registers[DSP_REG_OMR]); + printf("SP: %02x SSH: %04x SSL: %04x\n", dsp->core.registers[DSP_REG_SP], dsp->core.registers[DSP_REG_SSH], dsp->core.registers[DSP_REG_SSL]); } - - -/** - * Get given DSP register address and required bit mask. - * Works for A0-2, B0-2, LA, LC, M0-7, N0-7, R0-7, X0-1, Y0-1, PC, SR, SP, - * OMR, SSH & SSL registers, but note that the SP, SSH & SSL registers - * need special handling (in DSP*SetRegister()) when they are set. - * Return the register width in bits or zero for an error. - */ -int dsp_get_register_address(DSPState* dsp, const char *regname, uint32_t **addr, uint32_t *mask) -{ -#define MAX_REGNAME_LEN 4 - typedef struct { - const char name[MAX_REGNAME_LEN]; - uint32_t *addr; - size_t bits; - uint32_t mask; - } reg_addr_t; - - /* sorted by name so that this can be bisected */ - const reg_addr_t registers[] = { - - /* 56-bit A register */ - { "A0", &dsp->core.registers[DSP_REG_A0], 32, BITMASK(24) }, - { "A1", &dsp->core.registers[DSP_REG_A1], 32, BITMASK(24) }, - { "A2", &dsp->core.registers[DSP_REG_A2], 32, BITMASK(8) }, - - /* 56-bit B register */ - { "B0", &dsp->core.registers[DSP_REG_B0], 32, BITMASK(24) }, - { "B1", &dsp->core.registers[DSP_REG_B1], 32, BITMASK(24) }, - { "B2", &dsp->core.registers[DSP_REG_B2], 32, BITMASK(8) }, - - /* 16-bit LA & LC registers */ - { "LA", &dsp->core.registers[DSP_REG_LA], 32, BITMASK(16) }, - { "LC", &dsp->core.registers[DSP_REG_LC], 32, BITMASK(16) }, - - /* 16-bit M registers */ - { "M0", &dsp->core.registers[DSP_REG_M0], 32, BITMASK(16) }, - { "M1", &dsp->core.registers[DSP_REG_M1], 32, BITMASK(16) }, - { "M2", &dsp->core.registers[DSP_REG_M2], 32, BITMASK(16) }, - { "M3", &dsp->core.registers[DSP_REG_M3], 32, BITMASK(16) }, - { "M4", &dsp->core.registers[DSP_REG_M4], 32, BITMASK(16) }, - { "M5", &dsp->core.registers[DSP_REG_M5], 32, BITMASK(16) }, - { "M6", &dsp->core.registers[DSP_REG_M6], 32, BITMASK(16) }, - { "M7", &dsp->core.registers[DSP_REG_M7], 32, BITMASK(16) }, - - /* 16-bit N registers */ - { "N0", &dsp->core.registers[DSP_REG_N0], 32, BITMASK(16) }, - { "N1", &dsp->core.registers[DSP_REG_N1], 32, BITMASK(16) }, - { "N2", &dsp->core.registers[DSP_REG_N2], 32, BITMASK(16) }, - { "N3", &dsp->core.registers[DSP_REG_N3], 32, BITMASK(16) }, - { "N4", &dsp->core.registers[DSP_REG_N4], 32, BITMASK(16) }, - { "N5", &dsp->core.registers[DSP_REG_N5], 32, BITMASK(16) }, - { "N6", &dsp->core.registers[DSP_REG_N6], 32, BITMASK(16) }, - { "N7", &dsp->core.registers[DSP_REG_N7], 32, BITMASK(16) }, - - { "OMR", &dsp->core.registers[DSP_REG_OMR], 32, 0x5f }, - - /* 16-bit program counter */ - { "PC", (uint32_t*)(&dsp->core.pc), 24, BITMASK(24) }, - - /* 16-bit DSP R (address) registers */ - { "R0", &dsp->core.registers[DSP_REG_R0], 32, BITMASK(16) }, - { "R1", &dsp->core.registers[DSP_REG_R1], 32, BITMASK(16) }, - { "R2", &dsp->core.registers[DSP_REG_R2], 32, BITMASK(16) }, - { "R3", &dsp->core.registers[DSP_REG_R3], 32, BITMASK(16) }, - { "R4", &dsp->core.registers[DSP_REG_R4], 32, BITMASK(16) }, - { "R5", &dsp->core.registers[DSP_REG_R5], 32, BITMASK(16) }, - { "R6", &dsp->core.registers[DSP_REG_R6], 32, BITMASK(16) }, - { "R7", &dsp->core.registers[DSP_REG_R7], 32, BITMASK(16) }, - - { "SSH", &dsp->core.registers[DSP_REG_SSH], 32, BITMASK(16) }, - { "SSL", &dsp->core.registers[DSP_REG_SSL], 32, BITMASK(16) }, - { "SP", &dsp->core.registers[DSP_REG_SP], 32, BITMASK(6) }, - - /* 16-bit status register */ - { "SR", &dsp->core.registers[DSP_REG_SR], 32, 0xefff }, - - /* 48-bit X register */ - { "X0", &dsp->core.registers[DSP_REG_X0], 32, BITMASK(24) }, - { "X1", &dsp->core.registers[DSP_REG_X1], 32, BITMASK(24) }, - - /* 48-bit Y register */ - { "Y0", &dsp->core.registers[DSP_REG_Y0], 32, BITMASK(24) }, - { "Y1", &dsp->core.registers[DSP_REG_Y1], 32, BITMASK(24) } - }; - /* left, right, middle, direction */ - int l, r, m, dir = 0; - unsigned int i, len; - char reg[MAX_REGNAME_LEN]; - - for (i = 0; i < sizeof(reg) && regname[i]; i++) { - reg[i] = toupper(regname[i]); - } - if (i < 2 || regname[i]) { - /* too short or longer than any of the names */ - return 0; - } - len = i; - - /* bisect */ - l = 0; - r = ARRAYSIZE(registers) - 1; - do { - m = (l+r) >> 1; - for (i = 0; i < len; i++) { - dir = (int)reg[i] - registers[m].name[i]; - if (dir) { - break; - } - } - if (dir == 0) { - *addr = registers[m].addr; - *mask = registers[m].mask; - return registers[m].bits; - } - if (dir < 0) { - r = m-1; - } else { - l = m+1; - } - } while (l <= r); -#undef MAX_REGNAME_LEN - return 0; -} - - -/** - * Set given DSP register value, return false if unknown register given - */ -bool dsp_disasm_set_register(DSPState* dsp, const char *arg, uint32_t value) -{ - uint32_t *addr, mask, sp_value; - int bits; - - /* first check registers needing special handling... */ - if (arg[0]=='S' || arg[0]=='s') { - if (arg[1]=='P' || arg[1]=='p') { - dsp->core.registers[DSP_REG_SP] = value & BITMASK(6); - value &= BITMASK(4); - dsp->core.registers[DSP_REG_SSH] = dsp->core.stack[0][value]; - dsp->core.registers[DSP_REG_SSL] = dsp->core.stack[1][value]; - return true; - } - if (arg[1]=='S' || arg[1]=='s') { - sp_value = dsp->core.registers[DSP_REG_SP] & BITMASK(4); - if (arg[2]=='H' || arg[2]=='h') { - if (sp_value == 0) { - dsp->core.registers[DSP_REG_SSH] = 0; - dsp->core.stack[0][sp_value] = 0; - } else { - dsp->core.registers[DSP_REG_SSH] = value & BITMASK(16); - dsp->core.stack[0][sp_value] = value & BITMASK(16); - } - return true; - } - if (arg[2]=='L' || arg[2]=='l') { - if (sp_value == 0) { - dsp->core.registers[DSP_REG_SSL] = 0; - dsp->core.stack[1][sp_value] = 0; - } else { - dsp->core.registers[DSP_REG_SSL] = value & BITMASK(16); - dsp->core.stack[1][sp_value] = value & BITMASK(16); - } - return true; - } - } - } - - /* ...then registers where address & mask are enough */ - bits = dsp_get_register_address(dsp, arg, &addr, &mask); - switch (bits) { - case 32: - *addr = value & mask; - return true; - case 16: - *(uint16_t*)addr = value & mask; - return true; - } - return false; -} diff --git a/hw/xbox/dsp/dsp.h b/hw/xbox/dsp/dsp.h index 0b18fa0c45..d7d72291b7 100644 --- a/hw/xbox/dsp/dsp.h +++ b/hw/xbox/dsp/dsp.h @@ -57,8 +57,6 @@ uint32_t dsp_disasm_memory(DSPState* dsp, uint32_t dsp_memdump_addr, uint32_t ds uint32_t dsp_disasm_address(DSPState* dsp, FILE *out, uint32_t lowerAdr, uint32_t UpperAdr); void dsp_info(DSPState* dsp); void dsp_print_registers(DSPState* dsp); -int dsp_get_register_address(DSPState* dsp, const char *arg, uint32_t **addr, uint32_t *mask); -bool dsp_disasm_set_register(DSPState* dsp, const char *arg, uint32_t value); #endif /* DSP_H */ diff --git a/hw/xbox/dsp/dsp_cpu.c b/hw/xbox/dsp/dsp_cpu.c index cda605fd3c..a967037dad 100644 --- a/hw/xbox/dsp/dsp_cpu.c +++ b/hw/xbox/dsp/dsp_cpu.c @@ -133,7 +133,7 @@ static const int registers_mask[64] = { 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 8, 6, + 0, 24, 8, 6, 16, 16, 16, 16 }; @@ -393,6 +393,7 @@ void dsp56k_reset_cpu(dsp_core_t* dsp) for (i=0;i<8;i++) { dsp->registers[DSP_REG_M0+i]=0x00ffff; } + dsp->registers[DSP_REG_SR]=0xC00300; /* Interruptions */ memset(dsp->interrupt_is_pending, 0, sizeof(dsp->interrupt_is_pending)); @@ -503,6 +504,7 @@ static void disasm_reg_compare(dsp_core_t* dsp) case DSP_REG_X1: case DSP_REG_Y0: case DSP_REG_Y1: + case DSP_REG_SR: printf("\tReg: %s $%06x -> $%06x\n", registers_name[i], dsp->disasm_registers_save[i], dsp->registers[i]); break; @@ -530,7 +532,6 @@ static void disasm_reg_compare(dsp_core_t* dsp) case DSP_REG_N5: case DSP_REG_N6: case DSP_REG_N7: - case DSP_REG_SR: case DSP_REG_LA: case DSP_REG_LC: printf("\tReg: %s $%04x -> $%04x\n", @@ -819,7 +820,7 @@ static void dsp_postexecute_interrupts(dsp_core_t* dsp) if ( ((instr & 0xfff000) == 0x0d0000) || ((instr & 0xffc0ff) == 0x0bc080) ) { dsp->interrupt_state = DSP_INTERRUPT_LONG; dsp_stack_push(dsp, dsp->interrupt_save_pc, dsp->registers[DSP_REG_SR], 0); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= dsp->interrupt_ipl_to_raise<interrupt_state = DSP_INTERRUPT_LONG; dsp_stack_push(dsp, dsp->interrupt_save_pc, dsp->registers[DSP_REG_SR], 0); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= dsp->interrupt_ipl_to_raise<registers[DSP_REG_OMR] = value & 0xc7; break; case DSP_REG_SR: - dsp->registers[DSP_REG_SR] = value & 0xaf7f; + + /* Check for unhandled bits */ + assert((value & (1 << 7)) == 0); /* Scaling */ + assert((value & (1 << 12)) == 0); /* Reserved */ + assert((value & (1 << 14)) == 0); /* Double-Precision */ + assert((value & 0xFF0000) == 0xC00000); /* EMR */ + + dsp->registers[DSP_REG_SR] = value & BITMASK(registers_mask[DSP_REG_SR]); break; case DSP_REG_SP: stack_error = dsp->registers[DSP_REG_SP] & (3<registers[DSP_REG_SR] &= ~flags; + + /* This shouldn't be necessary, because this function only removes bits + * However, some code might still depend on this behaviour */ + dsp->registers[DSP_REG_SR] &= BITMASK(registers_mask[DSP_REG_SR]); +} + /********************************** * Effective address calculation @@ -295,7 +304,7 @@ static void emu_ccr_update_e_u_n_z(dsp_core_t* dsp, uint32_t reg0, uint32_t reg1 uint32_t scaling, value_e, value_u; /* Initialize SR register */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR]>>DSP_SR_S0) & BITMASK(2); switch(scaling) { @@ -362,7 +371,7 @@ static void emu_abs_a(dsp_core_t* dsp) dsp->registers[DSP_REG_A1] = dest[1]; dsp->registers[DSP_REG_A0] = dest[2]; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= (overflowed<registers[DSP_REG_B1] = dest[1]; dsp->registers[DSP_REG_B0] = dest[2]; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= (overflowed<registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -450,7 +459,7 @@ static void emu_adc_x_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -482,7 +491,7 @@ static void emu_adc_y_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -514,7 +523,7 @@ static void emu_adc_y_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -539,7 +548,7 @@ static void emu_add_b_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -564,7 +573,7 @@ static void emu_add_a_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -589,7 +598,7 @@ static void emu_add_x_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -614,7 +623,7 @@ static void emu_add_x_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -639,7 +648,7 @@ static void emu_add_y_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -664,7 +673,7 @@ static void emu_add_y_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -689,7 +698,7 @@ static void emu_add_x0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -714,7 +723,7 @@ static void emu_add_x0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -739,7 +748,7 @@ static void emu_add_y0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -764,7 +773,7 @@ static void emu_add_y0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -789,7 +798,7 @@ static void emu_add_x1_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -814,7 +823,7 @@ static void emu_add_x1_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -839,7 +848,7 @@ static void emu_add_y1_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -864,7 +873,7 @@ static void emu_add_y1_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -889,7 +898,7 @@ static void emu_addl_b_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -914,7 +923,7 @@ static void emu_addl_a_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -939,7 +948,7 @@ static void emu_addr_b_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -964,7 +973,7 @@ static void emu_addr_a_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -972,7 +981,7 @@ static void emu_and_x0_a(dsp_core_t* dsp) { dsp->registers[DSP_REG_A1] &= dsp->registers[DSP_REG_X0]; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_A1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_A1]==0)<registers[DSP_REG_B1] &= dsp->registers[DSP_REG_X0]; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_B1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_B1]==0)<registers[DSP_REG_A1] &= dsp->registers[DSP_REG_Y0]; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_A1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_A1]==0)<registers[DSP_REG_B1] &= dsp->registers[DSP_REG_Y0]; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_B1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_B1]==0)<registers[DSP_REG_A1] &= dsp->registers[DSP_REG_X1]; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_A1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_A1]==0)<registers[DSP_REG_B1] &= dsp->registers[DSP_REG_X1]; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_B1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_B1]==0)<registers[DSP_REG_A1] &= dsp->registers[DSP_REG_Y1]; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_A1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_A1]==0)<registers[DSP_REG_B1] &= dsp->registers[DSP_REG_Y1]; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_B1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_B1]==0)<registers[DSP_REG_A1] = dest[1]; dsp->registers[DSP_REG_A0] = dest[2]; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); @@ -1076,7 +1085,7 @@ static void emu_asl_b(dsp_core_t* dsp) dsp->registers[DSP_REG_B1] = dest[1]; dsp->registers[DSP_REG_B0] = dest[2]; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); @@ -1097,7 +1106,7 @@ static void emu_asr_a(dsp_core_t* dsp) dsp->registers[DSP_REG_A1] = dest[1]; dsp->registers[DSP_REG_A0] = dest[2]; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); @@ -1118,7 +1127,7 @@ static void emu_asr_b(dsp_core_t* dsp) dsp->registers[DSP_REG_B1] = dest[1]; dsp->registers[DSP_REG_B0] = dest[2]; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); @@ -1130,7 +1139,7 @@ static void emu_clr_a(dsp_core_t* dsp) dsp->registers[DSP_REG_A1] = 0; dsp->registers[DSP_REG_A0] = 0; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= (1<registers[DSP_REG_B1] = 0; dsp->registers[DSP_REG_B0] = 0; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= (1<registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1182,7 +1191,7 @@ static void emu_cmp_a_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1203,7 +1212,7 @@ static void emu_cmp_x0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1224,7 +1233,7 @@ static void emu_cmp_x0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1245,7 +1254,7 @@ static void emu_cmp_y0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1266,7 +1275,7 @@ static void emu_cmp_y0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } static void emu_cmp_x1_a(dsp_core_t* dsp) @@ -1286,7 +1295,7 @@ static void emu_cmp_x1_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1307,7 +1316,7 @@ static void emu_cmp_x1_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1328,7 +1337,7 @@ static void emu_cmp_y1_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1349,7 +1358,7 @@ static void emu_cmp_y1_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1372,7 +1381,7 @@ static void emu_cmpm_b_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1395,7 +1404,7 @@ static void emu_cmpm_a_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1418,7 +1427,7 @@ static void emu_cmpm_x0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1441,7 +1450,7 @@ static void emu_cmpm_x0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1464,7 +1473,7 @@ static void emu_cmpm_y0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1487,7 +1496,7 @@ static void emu_cmpm_y0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1510,7 +1519,7 @@ static void emu_cmpm_x1_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1533,7 +1542,7 @@ static void emu_cmpm_x1_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1556,7 +1565,7 @@ static void emu_cmpm_y1_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1579,7 +1588,7 @@ static void emu_cmpm_y1_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -1588,7 +1597,7 @@ static void emu_eor_x0_a(dsp_core_t* dsp) dsp->registers[DSP_REG_A1] ^= dsp->registers[DSP_REG_X0]; dsp->registers[DSP_REG_A1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_A1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_A1]==0)<registers[DSP_REG_B1] ^= dsp->registers[DSP_REG_X0]; dsp->registers[DSP_REG_B1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_B1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_B1]==0)<registers[DSP_REG_A1] ^= dsp->registers[DSP_REG_Y0]; dsp->registers[DSP_REG_A1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_A1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_A1]==0)<registers[DSP_REG_B1] ^= dsp->registers[DSP_REG_Y0]; dsp->registers[DSP_REG_B1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_B1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_B1]==0)<registers[DSP_REG_A1] ^= dsp->registers[DSP_REG_X1]; dsp->registers[DSP_REG_A1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_A1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_A1]==0)<registers[DSP_REG_B1] ^= dsp->registers[DSP_REG_X1]; dsp->registers[DSP_REG_B1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_B1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_B1]==0)<registers[DSP_REG_A1] ^= dsp->registers[DSP_REG_Y1]; dsp->registers[DSP_REG_A1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_A1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_A1]==0)<registers[DSP_REG_B1] ^= dsp->registers[DSP_REG_Y1]; dsp->registers[DSP_REG_B1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_B1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_B1]==0)<registers[DSP_REG_A1] <<= 1; dsp->registers[DSP_REG_A1] &= BITMASK(24); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newcarry; dsp->registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_A1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_A1]==0)<registers[DSP_REG_B1] <<= 1; dsp->registers[DSP_REG_B1] &= BITMASK(24); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newcarry; dsp->registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_B1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_B1]==0)<registers[DSP_REG_A1] & 1; dsp->registers[DSP_REG_A1] >>= 1; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newcarry; dsp->registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_A1]==0)<registers[DSP_REG_B1] & 1; dsp->registers[DSP_REG_B1] >>= 1; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newcarry; dsp->registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_B1]==0)<registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -1749,7 +1758,7 @@ static void emu_mac_m_x0_x0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } static void emu_mac_p_x0_x0_b(dsp_core_t* dsp) @@ -1770,7 +1779,7 @@ static void emu_mac_p_x0_x0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -1792,7 +1801,7 @@ static void emu_mac_m_x0_x0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -1814,7 +1823,7 @@ static void emu_mac_p_y0_y0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -1836,7 +1845,7 @@ static void emu_mac_m_y0_y0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } static void emu_mac_p_y0_y0_b(dsp_core_t* dsp) @@ -1857,7 +1866,7 @@ static void emu_mac_p_y0_y0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -1879,7 +1888,7 @@ static void emu_mac_m_y0_y0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -1901,7 +1910,7 @@ static void emu_mac_p_x1_x0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -1923,7 +1932,7 @@ static void emu_mac_m_x1_x0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -1945,7 +1954,7 @@ static void emu_mac_p_x1_x0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -1967,7 +1976,7 @@ static void emu_mac_m_x1_x0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -1989,7 +1998,7 @@ static void emu_mac_p_y1_y0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2011,7 +2020,7 @@ static void emu_mac_m_y1_y0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2033,7 +2042,7 @@ static void emu_mac_p_y1_y0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2055,7 +2064,7 @@ static void emu_mac_m_y1_y0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2077,7 +2086,7 @@ static void emu_mac_p_x0_y1_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2099,7 +2108,7 @@ static void emu_mac_m_x0_y1_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2121,7 +2130,7 @@ static void emu_mac_p_x0_y1_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2143,7 +2152,7 @@ static void emu_mac_m_x0_y1_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2165,7 +2174,7 @@ static void emu_mac_p_y0_x0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2187,7 +2196,7 @@ static void emu_mac_m_y0_x0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2209,7 +2218,7 @@ static void emu_mac_p_y0_x0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2231,7 +2240,7 @@ static void emu_mac_m_y0_x0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2253,7 +2262,7 @@ static void emu_mac_p_x1_y0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2275,7 +2284,7 @@ static void emu_mac_m_x1_y0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2297,7 +2306,7 @@ static void emu_mac_p_x1_y0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2319,7 +2328,7 @@ static void emu_mac_m_x1_y0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2341,7 +2350,7 @@ static void emu_mac_p_y1_x1_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2363,7 +2372,7 @@ static void emu_mac_m_y1_x1_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2385,7 +2394,7 @@ static void emu_mac_p_y1_x1_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2407,7 +2416,7 @@ static void emu_mac_m_y1_x1_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2431,7 +2440,7 @@ static void emu_macr_p_x0_x0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2455,7 +2464,7 @@ static void emu_macr_m_x0_x0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } static void emu_macr_p_x0_x0_b(dsp_core_t* dsp) @@ -2478,7 +2487,7 @@ static void emu_macr_p_x0_x0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2502,7 +2511,7 @@ static void emu_macr_m_x0_x0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2526,7 +2535,7 @@ static void emu_macr_p_y0_y0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2550,7 +2559,7 @@ static void emu_macr_m_y0_y0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } static void emu_macr_p_y0_y0_b(dsp_core_t* dsp) @@ -2573,7 +2582,7 @@ static void emu_macr_p_y0_y0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2597,7 +2606,7 @@ static void emu_macr_m_y0_y0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2621,7 +2630,7 @@ static void emu_macr_p_x1_x0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2645,7 +2654,7 @@ static void emu_macr_m_x1_x0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2669,7 +2678,7 @@ static void emu_macr_p_x1_x0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2693,7 +2702,7 @@ static void emu_macr_m_x1_x0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2717,7 +2726,7 @@ static void emu_macr_p_y1_y0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2741,7 +2750,7 @@ static void emu_macr_m_y1_y0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2765,7 +2774,7 @@ static void emu_macr_p_y1_y0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2789,7 +2798,7 @@ static void emu_macr_m_y1_y0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2813,7 +2822,7 @@ static void emu_macr_p_x0_y1_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2837,7 +2846,7 @@ static void emu_macr_m_x0_y1_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2861,7 +2870,7 @@ static void emu_macr_p_x0_y1_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2885,7 +2894,7 @@ static void emu_macr_m_x0_y1_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2909,7 +2918,7 @@ static void emu_macr_p_y0_x0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2933,7 +2942,7 @@ static void emu_macr_m_y0_x0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2957,7 +2966,7 @@ static void emu_macr_p_y0_x0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -2981,7 +2990,7 @@ static void emu_macr_m_y0_x0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -3005,7 +3014,7 @@ static void emu_macr_p_x1_y0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -3029,7 +3038,7 @@ static void emu_macr_m_x1_y0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -3053,7 +3062,7 @@ static void emu_macr_p_x1_y0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -3077,7 +3086,7 @@ static void emu_macr_m_x1_y0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -3101,7 +3110,7 @@ static void emu_macr_p_y1_x1_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -3125,7 +3134,7 @@ static void emu_macr_m_y1_x1_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -3149,7 +3158,7 @@ static void emu_macr_p_y1_x1_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -3173,7 +3182,7 @@ static void emu_macr_m_y1_x1_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newsr & 0xfe; } @@ -3195,7 +3204,7 @@ static void emu_mpy_p_x0_x0_a(dsp_core_t* dsp) dsp->registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B0] = source[2]; emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_A1] = dest[1]; dsp->registers[DSP_REG_A0] = dest[2]; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= (overflowed<registers[DSP_REG_B1] = dest[1]; dsp->registers[DSP_REG_B0] = dest[2]; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= (overflowed<registers[DSP_REG_A1] = ~dsp->registers[DSP_REG_A1]; dsp->registers[DSP_REG_A1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_A1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_A1]==0)<registers[DSP_REG_B1] = ~dsp->registers[DSP_REG_B1]; dsp->registers[DSP_REG_B1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_B1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_B1]==0)<registers[DSP_REG_A1] |= dsp->registers[DSP_REG_X0]; dsp->registers[DSP_REG_A1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_A1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_A1]==0)<registers[DSP_REG_B1] |= dsp->registers[DSP_REG_X0]; dsp->registers[DSP_REG_B1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_B1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_B1]==0)<registers[DSP_REG_A1] |= dsp->registers[DSP_REG_Y0]; dsp->registers[DSP_REG_A1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_A1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_A1]==0)<registers[DSP_REG_B1] |= dsp->registers[DSP_REG_Y0]; dsp->registers[DSP_REG_B1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_B1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_B1]==0)<registers[DSP_REG_A1] |= dsp->registers[DSP_REG_X1]; dsp->registers[DSP_REG_A1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_A1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_A1]==0)<registers[DSP_REG_B1] |= dsp->registers[DSP_REG_X1]; dsp->registers[DSP_REG_B1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_B1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_B1]==0)<registers[DSP_REG_A1] |= dsp->registers[DSP_REG_Y1]; dsp->registers[DSP_REG_A1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_A1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_A1]==0)<registers[DSP_REG_B1] |= dsp->registers[DSP_REG_Y1]; dsp->registers[DSP_REG_B1] &= BITMASK(24); /* FIXME: useless ? */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_B1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_B1]==0)<registers[DSP_REG_A1] |= newcarry; dsp->registers[DSP_REG_A1] &= BITMASK(24); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newcarry; dsp->registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_A1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_A1]==0)<registers[DSP_REG_B1] |= newcarry; dsp->registers[DSP_REG_B1] &= BITMASK(24); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newcarry; dsp->registers[DSP_REG_SR] |= ((dsp->registers[DSP_REG_B1]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_B1]==0)<registers[DSP_REG_A1] >>= 1; dsp->registers[DSP_REG_A1] |= newcarry<<23; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newcarry; dsp->registers[DSP_REG_SR] |= newcarry<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_A1]==0)<registers[DSP_REG_B1] >>= 1; dsp->registers[DSP_REG_B1] |= newcarry<<23; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newcarry; dsp->registers[DSP_REG_SR] |= newcarry<registers[DSP_REG_SR] |= (dsp->registers[DSP_REG_B1]==0)<registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4422,7 +4431,7 @@ static void emu_sbc_x_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4454,7 +4463,7 @@ static void emu_sbc_y_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4486,7 +4495,7 @@ static void emu_sbc_y_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4511,7 +4520,7 @@ static void emu_sub_b_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4536,7 +4545,7 @@ static void emu_sub_a_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4561,7 +4570,7 @@ static void emu_sub_x_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4586,7 +4595,7 @@ static void emu_sub_x_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4611,7 +4620,7 @@ static void emu_sub_y_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4636,7 +4645,7 @@ static void emu_sub_y_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4661,7 +4670,7 @@ static void emu_sub_x0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4686,7 +4695,7 @@ static void emu_sub_x0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4711,7 +4720,7 @@ static void emu_sub_y0_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4736,7 +4745,7 @@ static void emu_sub_y0_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4761,7 +4770,7 @@ static void emu_sub_x1_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4786,7 +4795,7 @@ static void emu_sub_x1_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4811,7 +4820,7 @@ static void emu_sub_y1_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4836,7 +4845,7 @@ static void emu_sub_y1_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4861,7 +4870,7 @@ static void emu_subl_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4886,7 +4895,7 @@ static void emu_subl_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4913,7 +4922,7 @@ static void emu_subr_a(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -4940,7 +4949,7 @@ static void emu_subr_b(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -5044,7 +5053,7 @@ static void emu_tst_a(dsp_core_t* dsp) dsp->registers[DSP_REG_A1], dsp->registers[DSP_REG_A0]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B1], dsp->registers[DSP_REG_B0]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_B2] = dsp->registers[DSP_REG_A0]; } - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= pass<registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -5851,7 +5860,7 @@ static void emu_and_x(dsp_core_t* dsp, uint32_t x, uint32_t d) dsp->registers[dstreg] &= x; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[dstreg]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[dstreg]==0)<registers[DSP_REG_A0] = dest[2]; } - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); @@ -5958,7 +5967,7 @@ static void emu_asr_imm(dsp_core_t* dsp) dsp->registers[DSP_REG_A0] = dest[2]; } - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); @@ -6014,7 +6023,7 @@ static void emu_bchg_aa(dsp_core_t* dsp) dsp56k_write_memory(dsp, memspace, addr, value); /* Set carry */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<instr_cycle += 2; @@ -6039,7 +6048,7 @@ static void emu_bchg_ea(dsp_core_t* dsp) dsp56k_write_memory(dsp, memspace, addr, value); /* Set carry */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<instr_cycle += 2; @@ -6064,7 +6073,7 @@ static void emu_bchg_pp(dsp_core_t* dsp) dsp56k_write_memory(dsp, memspace, addr, value); /* Set carry */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<instr_cycle += 2; @@ -6093,7 +6102,7 @@ static void emu_bchg_reg(dsp_core_t* dsp) dsp_write_reg(dsp, numreg, value); /* Set carry */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<instr_cycle += 2; @@ -6113,7 +6122,7 @@ static void emu_bclr_aa(dsp_core_t* dsp) dsp56k_write_memory(dsp, memspace, addr, value); /* Set carry */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<instr_cycle += 2; @@ -6134,7 +6143,7 @@ static void emu_bclr_ea(dsp_core_t* dsp) dsp56k_write_memory(dsp, memspace, addr, value); /* Set carry */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<instr_cycle += 2; @@ -6155,7 +6164,7 @@ static void emu_bclr_pp(dsp_core_t* dsp) dsp56k_write_memory(dsp, memspace, addr, value); /* Set carry */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<instr_cycle += 2; @@ -6180,7 +6189,7 @@ static void emu_bclr_reg(dsp_core_t* dsp) dsp_write_reg(dsp, numreg, value); /* Set carry */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<instr_cycle += 2; @@ -6309,7 +6318,7 @@ static void emu_bset_aa(dsp_core_t* dsp) dsp56k_write_memory(dsp, memspace, addr, value); /* Set carry */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<instr_cycle += 2; @@ -6366,7 +6375,7 @@ static void emu_bset_ea(dsp_core_t* dsp) dsp56k_write_memory(dsp, memspace, addr, value); /* Set carry */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<instr_cycle += 2; @@ -6386,7 +6395,7 @@ static void emu_bset_pp(dsp_core_t* dsp) dsp56k_write_memory(dsp, memspace, addr, value); /* Set carry */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<instr_cycle += 2; @@ -6411,7 +6420,7 @@ static void emu_bset_reg(dsp_core_t* dsp) dsp_write_reg(dsp, numreg, value); /* Set carry */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<instr_cycle += 2; @@ -6430,7 +6439,7 @@ static void emu_btst_aa(dsp_core_t* dsp) newcarry = (value>>numbit) & 1; /* Set carry */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<instr_cycle += 2; @@ -6449,7 +6458,7 @@ static void emu_btst_ea(dsp_core_t* dsp) newcarry = (value>>numbit) & 1; /* Set carry */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<instr_cycle += 2; @@ -6468,7 +6477,7 @@ static void emu_btst_pp(dsp_core_t* dsp) newcarry = (value>>numbit) & 1; /* Set carry */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<instr_cycle += 2; @@ -6490,7 +6499,7 @@ static void emu_btst_reg(dsp_core_t* dsp) newcarry = (value>>numbit) & 1; /* Set carry */ - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] |= newcarry<instr_cycle += 2; @@ -6521,7 +6530,7 @@ static void emu_cmp_imm(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -6551,7 +6560,7 @@ static void emu_cmp_long(dsp_core_t* dsp) emu_ccr_update_e_u_n_z(dsp, dest[0], dest[1], dest[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -6593,7 +6602,7 @@ static void emu_cmpu(dsp_core_t* dsp) uint16_t newsr = dsp_sub56(source, dest); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-( + emu_clear_sr_flags(dsp, (1<registers[DSP_REG_SR] |= newsr & (1<registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -6692,7 +6701,7 @@ static void emu_div(dsp_core_t* dsp) dsp->registers[DSP_REG_B0] = dest[2]; } - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= (1-((dest[0]>>7) & 1))<registers[DSP_REG_SR] |= newsr & (1<registers[DSP_REG_SR] |= newsr & (1<registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -7814,7 +7823,7 @@ static void emu_mpyi(dsp_core_t* dsp) } emu_ccr_update_e_u_n_z(dsp, source[0], source[1], source[2]); - dsp->registers[DSP_REG_SR] &= BITMASK(16)-(1<registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; } @@ -7871,7 +7880,7 @@ static void emu_or_long(dsp_core_t* dsp) dsp->registers[dstreg] |= xxxx; - dsp->registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= ((dsp->registers[dstreg]>>23) & 1)<registers[DSP_REG_SR] |= (dsp->registers[dstreg]==0)<registers[DSP_REG_SR] &= BITMASK(16)-((1<registers[DSP_REG_SR] |= newsr; }