OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 1727 to Rev 1728
    Reverse comparison

Rev 1727 → Rev 1728

/trunk/or1ksim/cpu/or32/op.c
191,15 → 191,9
env->delay_insn = 1;
}
 
__or_dynop void op_do_jump(void)
{
RET_FROM_DYN_CODE;
}
 
__or_dynop void op_do_jump_delay(void)
{
env->pc = env->pc_delay;
RET_FROM_DYN_CODE;
}
 
__or_dynop void op_clear_delay_insn(void)
286,7 → 280,7
{
op_support_nop_reset();
env->pc = EXCEPT_RESET;
RET_FROM_DYN_CODE;
FORCE_RET;
}
 
__or_dynop void op_nop_printf(void)
947,7 → 941,6
env->delay_insn = 0;
env->sprs[SPR_EEAR_BASE] = env->pc - 4;
env->pc = EXCEPT_ILLEGAL - 4;
RET_FROM_DYN_CODE;
}
 
__or_dynop void op_illegal(void)
954,7 → 947,6
{
env->sprs[SPR_EEAR_BASE] = env->pc;
env->pc = EXCEPT_ILLEGAL;
RET_FROM_DYN_CODE;
}
 
__or_dynop void op_do_sched(void)
/trunk/or1ksim/cpu/or32/dyn_rec.c
706,6 → 706,7
gen_op_do_sched_delay(opq, 1);
gen_op_clear_delay_insn(opq, 1);
gen_op_do_jump_delay(opq, 1);
gen_op_do_jump(opq, 1);
gen_op_mark_loc(opq, 1);
 
for(j = 0; j < NUM_T_REGS; j++)
991,6 → 992,7
gen_op_do_sched_delay(opq, 1);
 
gen_op_do_jump_delay(opq, 1);
gen_op_do_jump(opq, 1);
}
 
/*------------------------------[ Operation generation for an instruction ]---*/
1193,10 → 1195,13
{
if(!opq->param[2]) {
/* There is no option. This _will_ cause an illeagal exception */
if(!delay_slot)
if(!delay_slot) {
gen_op_illegal(opq, 1);
else
gen_op_do_jump(opq, 1);
} else {
gen_op_illegal(opq, 1);
gen_op_do_jump(opq, 1);
}
return;
}
 
1223,10 → 1228,13
{
if(!opq->param[2]) {
/* There is no option. This _will_ cause an illeagal exception */
if(!delay_slot)
if(!delay_slot) {
gen_op_illegal(opq, 1);
else
gen_op_do_jump(opq, 1);
} else {
gen_op_illegal(opq, 1);
gen_op_do_jump(opq, 1);
}
return;
}
 
2360,10 → 2368,13
 
void gen_l_invalid(struct op_queue *opq, int param_t[3], int delay_slot)
{
if(!delay_slot)
if(!delay_slot) {
gen_op_illegal(opq, 1);
else
gen_op_do_jump(opq, 1);
} else {
gen_op_illegal_delay(opq, 1);
gen_op_do_jump(opq, 1);
}
}
 
/*----------------------------------[ Floating point instructions (stubs) ]---*/
/trunk/or1ksim/cpu/or32/op_i386.h
26,5 → 26,15
#define SPEEDY_CALL(func) asm("call "#func"\n")
 
/* Return out of the recompiled code */
#define RET_FROM_DYN_CODE asm volatile ("ret")
asm(
" .align 2\n"
" .p2align 4,,15\n"
".globl op_do_jump\n"
" .type op_do_jump,@function\n"
"op_do_jump:\n"
" ret\n"
" ret\n"
"1:\n"
" .size op_do_jump,1b-op_do_jump\n"
);
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.