void ARMul_CPSRAltered (ARMul_State * state) { ARMword oldmode; if (state->prog32Sig == LOW) state->Cpsr &= (CCBITS | INTBITS | R15MODEBITS); oldmode = state->Mode; if (state->Mode != (state->Cpsr & MODEBITS)) { state->Mode = ARMul_SwitchMode (state, state->Mode, state->Cpsr & MODEBITS); state->NtransSig = (state->Mode & 3) ? HIGH : LOW; } state->Cpsr &= ~MODEBITS; ASSIGNINT (state->Cpsr & INTBITS); state->Cpsr &= ~INTBITS; ASSIGNN ((state->Cpsr & NBIT) != 0); state->Cpsr &= ~NBIT; ASSIGNZ ((state->Cpsr & ZBIT) != 0); state->Cpsr &= ~ZBIT; ASSIGNC ((state->Cpsr & CBIT) != 0); state->Cpsr &= ~CBIT; ASSIGNV ((state->Cpsr & VBIT) != 0); state->Cpsr &= ~VBIT; ASSIGNS ((state->Cpsr & SBIT) != 0); state->Cpsr &= ~SBIT; #ifdef MODET ASSIGNT ((state->Cpsr & TBIT) != 0); state->Cpsr &= ~TBIT; #endif if (oldmode > SVC26MODE) { if (state->Mode <= SVC26MODE) { state->Emulate = CHANGEMODE; state->Reg[15] = ECC | ER15INT | EMODE | R15PC; } } else { if (state->Mode > SVC26MODE) { state->Emulate = CHANGEMODE; state->Reg[15] = R15PC; } else state->Reg[15] = ECC | ER15INT | EMODE | R15PC; } }
void eb_param_set(int param) { int super = 0; int ordin = 0; int kbltz = 0; char str[2 * FB_BYTES + 1]; fb_t a, b, c; eb_t g; bn_t r; bn_t h; fb_null(a); fb_null(b); fb_null(c); eb_null(g); bn_null(r); bn_null(h); TRY { fb_new(a); fb_new(b); fb_new(c); eb_new(g); bn_new(r); bn_new(h); core_get()->eb_id = 0; switch (param) { #if defined(EB_ORDIN) && FB_POLYN == 163 case NIST_B163: ASSIGN(NIST_B163, NIST_163); ordin = 1; break; #endif #if defined(EB_KBLTZ) && FB_POLYN == 163 case NIST_K163: ASSIGN(NIST_K163, NIST_163); kbltz = 1; break; #endif #if defined(EB_ORDIN) && FB_POLYN == 233 case NIST_B233: ASSIGN(NIST_B233, NIST_233); ordin = 1; break; #endif #if defined(EB_KBLTZ) && FB_POLYN == 233 case NIST_K233: ASSIGN(NIST_K233, NIST_233); kbltz = 1; break; #endif #if defined(EB_ORDIN) && FB_POLYN == 251 case EBACS_B251: ASSIGN(EBACS_B251, PENTA_251); ordin = 1; break; #endif #if defined(EB_ORDIN) && FB_POLYN == 257 case HALVE_B257: ASSIGN(HALVE_B257, TRINO_257); ordin = 1; break; #endif #if defined(EB_ORDIN) && FB_POLYN == 283 case NIST_B283: ASSIGN(NIST_B283, NIST_283); ordin = 1; break; #endif #if defined(EB_KBLTZ) && FB_POLYN == 283 case NIST_K283: ASSIGN(NIST_K283, NIST_283); kbltz = 1; break; #endif #if defined(EB_KBLTZ) && FB_POLYN == 239 case SECG_K239: ASSIGN(SECG_K239, SECG_239); kbltz = 1; break; #endif #if defined(EB_ORDIN) && FB_POLYN == 409 case NIST_B409: ASSIGN(NIST_B409, NIST_409); ordin = 1; break; #endif #if defined(EB_KBLTZ) && FB_POLYN == 409 case NIST_K409: ASSIGN(NIST_K409, NIST_409); kbltz = 1; break; #endif #if defined(EB_ORDIN) && FB_POLYN == 571 case NIST_B571: ASSIGN(NIST_B571, NIST_571); ordin = 1; break; #endif #if defined(EB_KBLTZ) && FB_POLYN == 571 case NIST_K571: ASSIGN(NIST_K571, NIST_571); kbltz = 1; break; #endif #if defined(EB_SUPER) && FB_POLYN == 271 case ETAT_P271: ASSIGNS(ETAT_P271, PENTA_271); super = 1; break; case ETAT_T271: ASSIGNS(ETAT_T271, TRINO_271); super = 1; break; #endif #if defined(EB_SUPER) && FB_POLYN == 353 case ETAT_S353: ASSIGNS(ETAT_S353, TRINO_353); super = 1; break; #endif #if defined(EB_SUPER) && FB_POLYN == 1223 case ETAT_S1223: ASSIGNS(ETAT_S1223, TRINO_1223); super = 1; break; #endif default: (void)str; THROW(ERR_NO_VALID); break; } /* Do not generate warnings. */ (void)kbltz; (void)ordin; (void)super; (void)c; fb_zero(g->z); fb_set_bit(g->z, 0, 1); g->norm = 1; #if defined(EB_ORDIN) if (ordin) { eb_curve_set_ordin(a, b, g, r, h); core_get()->eb_id = param; } #endif #if defined(EB_KBLTZ) if (kbltz) { eb_curve_set_kbltz(a, g, r, h); core_get()->eb_id = param; } #elif defined(EB_ORDIN) if (kbltz) { eb_curve_set_ordin(a, b, g, r, h); core_get()->eb_id = param; } #endif #if defined(EB_SUPER) if (super) { eb_curve_set_super(a, b, c, g, r, h); core_get()->eb_id = param; } #endif } CATCH_ANY { THROW(ERR_CAUGHT); } FINALLY { fb_free(a); fb_free(b); fb_free(c); eb_free(g); bn_free(r); bn_free(h); } }