X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=sim%2Ffr30%2Fsem.c;h=58896987b92d252e3e4cd106d7345129d5981285;hb=d4f3574e777abfa65c9ba134e582228f3f32a8d6;hp=9d05ecd2b1f7edf51ad417bf7ac6f69adf4fcd76;hpb=325188ecac3a52d92d359c70f9b730470760e1d7;p=deliverable%2Fbinutils-gdb.git diff --git a/sim/fr30/sem.c b/sim/fr30/sem.c index 9d05ecd2b1..58896987b9 100644 --- a/sim/fr30/sem.c +++ b/sim/fr30/sem.c @@ -5697,13 +5697,21 @@ SEM_FN_NAME (fr30bf,init_idesc_table) (SIM_CPU *current_cpu) { IDESC *idesc_table = CPU_IDESC (current_cpu); const struct sem_fn_desc *sf; + int mach_num = MACH_NUM (CPU_MACH (current_cpu)); for (sf = &sem_fns[0]; sf->fn != 0; ++sf) { + int valid_p = CGEN_INSN_MACH_HAS_P (idesc_table[sf->index].idata, mach_num); #if FAST_P - idesc_table[sf->index].sem_fast = sf->fn; + if (valid_p) + idesc_table[sf->index].sem_fast = sf->fn; + else + idesc_table[sf->index].sem_fast = SEM_FN_NAME (fr30bf,x_invalid); #else - idesc_table[sf->index].sem_full = sf->fn; + if (valid_p) + idesc_table[sf->index].sem_full = sf->fn; + else + idesc_table[sf->index].sem_full = SEM_FN_NAME (fr30bf,x_invalid); #endif } }