-}\r
-\r
-\r
-/***************************************************************************/\r
-/* m68k_get_register(register) */\r
-/* Parametro: Registro a obtener valor (indice) */\r
-/* Retorno: Valor del registro requerido */\r
-/* Observacion: En caso de que el indice no sea correcto */\r
-/* la funcion devolvera -1 */\r
-/***************************************************************************/\r
-u32 m68k_get_register(M68K_CONTEXT *context, m68k_register reg)\r
-{\r
- M68K_CONTEXT *oldcontext = g_m68kcontext;\r
- s32 ret;\r
-\r
- g_m68kcontext = context;\r
-\r
- switch (reg)\r
- {\r
- case M68K_REG_D0:\r
- case M68K_REG_D1:\r
- case M68K_REG_D2:\r
- case M68K_REG_D3:\r
- case M68K_REG_D4:\r
- case M68K_REG_D5:\r
- case M68K_REG_D6:\r
- case M68K_REG_D7:\r
- ret = DREG(reg - M68K_REG_D0);\r
- break;\r
-\r
- case M68K_REG_A0:\r
- case M68K_REG_A1:\r
- case M68K_REG_A2:\r
- case M68K_REG_A3:\r
- case M68K_REG_A4:\r
- case M68K_REG_A5:\r
- case M68K_REG_A6:\r
- case M68K_REG_A7:\r
- ret = AREG(reg - M68K_REG_A0);\r
- break;\r
-\r
- case M68K_REG_ASP:\r
- ret = ASP;\r
- break;\r
-\r
- case M68K_REG_PC:\r
- ret = m68k_get_pc(context);\r
- break;\r
-\r
- case M68K_REG_SR:\r
- ret = m68kcontext.sr;\r
- break;\r
-\r
- default:\r
- ret = M68K_INV_REG;\r
- break;\r
- }\r
-\r
- g_m68kcontext = oldcontext;\r
- return ret;\r
-}\r
-\r
-/***********************************************************************/\r
-/* m68k_set_register(register,value) */\r
-/* Parametros: Registro (indice) y valor a asignar */\r
-/* Retorno: Exito de la operacion */\r
-/* 0 La operacion se ha realizado satisfactoriamente */\r
-/* 1 El indice del registro no es valido (fuera de limites) */\r
-/***********************************************************************/\r
-u32 m68k_set_register(M68K_CONTEXT *context, m68k_register reg, u32 value)\r
-{\r
- M68K_CONTEXT *oldcontext = g_m68kcontext;\r
- s32 ret = M68K_OK;\r
-\r
- g_m68kcontext = context;\r
-\r
- switch (reg)\r
- {\r
- case M68K_REG_D0:\r
- case M68K_REG_D1:\r
- case M68K_REG_D2:\r
- case M68K_REG_D3:\r
- case M68K_REG_D4:\r
- case M68K_REG_D5:\r
- case M68K_REG_D6:\r
- case M68K_REG_D7:\r
- DREG(reg - M68K_REG_D0) = value;\r
- break;\r
-\r
- case M68K_REG_A0:\r
- case M68K_REG_A1:\r
- case M68K_REG_A2:\r
- case M68K_REG_A3:\r
- case M68K_REG_A4:\r
- case M68K_REG_A5:\r
- case M68K_REG_A6:\r
- case M68K_REG_A7:\r
- AREG(reg - M68K_REG_A0) = value;\r
- break;\r
-\r
- case M68K_REG_ASP:\r
- ASP = value;\r
- break;\r
-\r
- case M68K_REG_PC:\r
- if (m68kcontext.execinfo & M68K_RUNNING)\r
- {\r
- SET_PC(value & M68K_ADR_MASK);\r
- }\r
- else\r
- {\r
- m68kcontext.pc = value;\r
- }\r
- break;\r
-\r
- case M68K_REG_SR:\r
- m68kcontext.sr = value & 0xFFFF;\r
- break;\r
-\r
- default:\r
- ret = M68K_INV_REG;\r
- break;\r
- }\r
-\r
- g_m68kcontext = oldcontext;\r
- return ret;\r