📄 changelog
字号:
* mloop.in (execute): Only call modeling function if the pointer is not NULL. * frv.c (frvbf_model_insn_after): Only access FR500_MODEL_DATA for fr500.2000-01-03 Dave Brolley <brolley@cygnus.com> * options.c (OPTION_FRV_MEMORY_LATENCY): New enumerator. (frv_options): Add --memory-latency. (frv_option_handler): Handle FRV_OPTION_MEMORY_LATENCY. * mloop.in (@cpu@_simulate_insn_prefetch): Use cache memory_latency. * frv.c (SET_ACC_USE_IS_MEDIA_P1): operate on d->curr_acc_p1 (SET_ACC_USE_NOT_MEDIA_P1): operate on d->curr_acc_p1 (SET_ACC_USE_IS_MEDIA_P2): operate on d->curr_acc_p1 (SET_ACC_USE_NOT_MEDIA_P2): operate on d->curr_acc_p1 (update_latencies): Only clear usage flags if the register has no target latency. (frvbf_model_insn_before): Update cur_acc_p1 and cur_acc_p2. Use | (or) not |= (or assgnment). (frvbf_model_insn_after): Print post processing wait for all insns. Update prev_acc_p1 and prev_acc_p2. (frvbf_model_fr500_u_gr_load_store): Use cache memory_latency. (frvbf_model_fr500_u_fr_load_store): Use cache memory_latency. (frvbf_model_fr500_u_swap): Use cache memory_latency. (frvbf_model_fr500_u_media): Use busy_adjustment[4] for out_ACC40Sk. (frvbf_model_fr500_u_media): Use busy_adjustment[5] for out_ACC40Uk. (frvbf_model_fr500_u_media_quad_arith): New function. (frvbf_model_fr500_u_media_dual_mul): New function. (frvbf_model_fr500_u_media_quad_mul): New function. (frvbf_model_fr500_u_media_quad_complex): New function. (frvbf_model_fr500_u_media_dual_expand): New function. (frvbf_model_fr500_u_media_dual_unpack): New function. (frvbf_model_fr500_u_media_dual_btoh): New function. (frvbf_model_fr500_u_media_dual_htob): New function. (frvbf_model_fr500_u_media_dual_btohe): New function. (frv_ref_SI): New function. * cache.h (FRV_CACHE): Add memory_latency field. * cache.c (frv_cache_init): Initialize memory_latency. * arch.h,cpu.h,decode.c,decode.h,model.c,sem.c: Regenerate.1999-12-17 Dave Brolley <brolley@cygnus.com> * sim-if.c (sim_open): Initialize insn prefetch and reset register. * options.c (OPTIONS_FRV_PROFILE_CACHE): New enumeration. (OPTIONS_FRV_PROFILE_PARALLEL): New enumeration. (OPTIONS_FRV_TIMER): New enumeration. (frv_options): Add --profile-cache, --profile-parallel, --timer. (frv_option_handler): Override common implementation of -p. Handle --profile-cache, --profile-parallel, --timer. * mloop.in (execute): Call profiling functions if the timer interrupt is enabled. (@cpu@_simulate_insn_prefetch): New function. (main loop): Call @cpu@_simulate_insn_prefetch. * interrupts.c (frv_queue_interrupt): Don't queue two external interrupts of the same priority. (frv_queue_external_interrupt): New function. (frv_external_interrupt): New function. (handle_interrupt): Handle external interrupts. (check_reset): New function. (frv_process_interrupts): Call check_reset. * frv.c: Include "bfd.h" (frvbf_h_psr_get_handler): Set the PIL field. (frvbf_h_psr_set_handler): Get the PIL field. (DUAL_REG): New macro. (DUAL_DOUBLE): New macro. (SET_USE_IS_FPOP): New macro. (SET_USE_NOT_FPOP): New macro. (USE_IS_FPOP): New macro. (SET_USE_IS_MEDIA): New macro. (SET_USE_NOT_MEDIA): New macro. (USE_IS_MEDIA_P1): New macro. (SET_USE_IS_MEDIA_P1): New macro. (SET_USE_NOT_MEDIA_P1): New macro. (SET_USE_IS_MEDIA_P2): New macro. (SET_USE_NOT_MEDIA_P2): New macro. (USE_IS_MEDIA_P2): New macro. (SET_ACC_USE_IS_MEDIA_P1): New macro. (SET_ACC_USE_NOT_MEDIA_P1): New macro. (ACC_USE_IS_MEDIA_P1): New macro. (SET_ACC_USE_IS_MEDIA_P2): New macro. (SET_ACC_USE_NOT_MEDIA_P2): New macro. (ACC_USE_IS_MEDIA_P2): New macro. (RESOURCE_IDIV): New macro. (RESOURCE_FDIV): New macro. (RESOURCE_SQRT): New macro. (fr_busy_adjust): New array. (acc_busy_adjust): New array. (apply_latency_adjustments): New function. (update_latencies): New function. (handle_wait_cycles): New function. (handle_resource_wait): New function. (update_target_latencies): New function. (frvbf_model_insn_before): Add resource latency to cycle counts. (frvbf_model_insn_after): Add resource latency to cycle counts. (update_GR_latency): New function. (update_GRdouble_latency): New function. (update_FR_latency): New function. (update_FRdouble_latency): New function. (decrease_ACC_busy): New function. (decrease_FR_busy): New function. (increase_FR_busy): New function. (update_ACC_latency): New function. (update_CCR_latency): New function. (update_idiv_resource_latency): New function. (update_fdiv_resource_latency): New function. (update_fsqrt_resource_latency): New function. (vliw_wait_for_GR): New function. (vliw_wait_for_GRdouble): New function. (vliw_wait_for_FR): New function. (vliw_wait_for_FRdouble): New function. (vliw_wait_for_CCR): New function. (vliw_wait_for_ACC): New function. (vliw_wait_for_idiv_resource): New function. (vliw_wait_for_fdiv_resource): New function. (vliw_wait_for_fsqrt_resource): New function. (enforce_full_fr_latency): New function. (frvbf_model_fr500_u_exec): New function. (frvbf_model_fr500_u_integer): New function. (frvbf_model_fr500_u_imul): New function. (frvbf_model_fr500_u_idiv): New function. (frvbf_model_fr500_u_branch): New function. (frvbf_model_fr500_u_set_hilo): New function. (frvbf_model_fr500_u_gr_load_store): New function. (frvbf_model_fr500_u_fr_load_store): New function. (frvbf_model_fr500_u_swap): New function. (frvbf_model_fr500_u_fr2fr): New function. (frvbf_model_fr500_u_fr2gr): New function. (frvbf_model_fr500_u_spr2gr): New function. (frvbf_model_fr500_u_gr2fr): New function. (frvbf_model_fr500_u_gr2spr): New function. (post_wait_for_FR): New function. (post_wait_for_FRdouble): New function. (post_wait_for_ACC): New function. (post_wait_for_CCR): New function. (post_wait_for_fdiv): New function. (post_wait_for_fsqrt): New function. (adjust_float_register_busy): New function. (adjust_double_register_busy): New function. (restore_float_register_busy): New function. (restore_double_register_busy): New function. (frvbf_model_fr500_u_float_arith): New function. (frvbf_model_fr500_u_float_dual_arith): New function. (frvbf_model_fr500_u_float_div): New function. (frvbf_model_fr500_u_float_sqrt): New function. (frvbf_model_fr500_u_float_compare): New function. (frvbf_model_fr500_u_float_dual_compare): New function. (frvbf_model_fr500_u_float_convert): New function. (frvbf_model_fr500_u_media): New function. (frvbf_model_fr500_u_barrier): New function. (frvbf_model_fr500_u_membar): New function. * frv-sim.h (LEUINT): New macro. (GET_HSR0_SA): New macro. (struct frv_interrupt_timer): New struct. (struct frv_interrupt_state): Add timer fiield. (frv_queue_external_interrupt): New function. (frv_external_interrupt): New function. (frv_profile_info): New function. (PROFILE_CACHE_IDX): New enumerator. (PROFILE_PARALLEL_IDX): New enumerator. (PROFILE_cache): New macro. (PROFILE_parallel): New macro. (WITH_PROFILE_CACHE_P): New macro. (WITH_PROFILE_PARALLEL_P): New macro. * cache.h (FRV_CACHE): Add last_was_hit field. * cache.c (get_tag): Use new last_was_hit field. (frv_cache_read): Ditto. (frv_cache_write): Ditto. * arch.h,cpu.c,cpu.h,decode.c,decode.h,model.c,sem.c: Regenerate.1999-12-13 Dave Brolley <brolley@cygnus.com> * frv.c (frvbf_h_spr_set_handler): Handle accumulator guards. (frvbf_clear_all_accumulators): Pass frvbf_h_acc40S_set to sim_queue_fn_di_write. (frvbf_media_cut_ss): New function. * frv-sim.h (frvbf_media_cut_ss): New function. * cpu.c,cpu.h,decode.c,decode.h,model.c,sem.c: Regenerate.1999-12-13 Dave Brolley <brolley@cygnus.com> * pipeline.c (check_insn_major_constraints): F-4, F-8 and M-8 have no constraints. * interrupts.c (frv_queue_illegal_instruction_interrupt): Use FRV_IS_FLOAT_INSN and FRV_IS_MEDIA_INSN. (frv_detect_insn_access_interrupts): Use FRV_IS_FLOAT_INSN and FRV_IS_MEDIA_INSN. * frv.c (frvbf_model_simple_u_exec): New function. * frv-sim.h (FRV_IS_FLOAT_INSN): Range includes F-8. (FRV_IS_MEDIA_INSN): Range includes M-8. * Makefile.in (stamp-cpu): add 'simple' to the list of machines. * arch.c,arch.h,cpu.h,cpuall.h,decode.c,decode.h,model.c,sem.c: Regenerate.1999-12-10 Dave Brolley <brolley@cygnus.com> * traps.c (check_registers_available): New function. (clear_ne_flags): Generate register_exception if register(s) not available. (frvbf_commit): Generate register_exception if register(s) not available. * interrupts.c (frv_program_or_software_interrupt): No need to copy GR4-GR7 to SR0-SR4. * frv.c (frvbf_h_psr_set_handler): Special handling for PSR.S and PSR.ESR. (frvbf_h_psr_s_set_handler): New function. (frvbf_h_psr_esr_set_handler): New function. (frvbf_switch_supervisor_user_context): New function. (frvbf_scan_result): Reflect latest ISA. * frv-sim.h (frvbf_h_psr_s_set_handler): New function. (frvbf_h_psr_esr_set_handler): New function. (frvbf_switch_supervisor_user_context): New function. (GET_HSR0_FRN): New Macro. (GET_HSR0_GRN): New Macro. (GET_HSR0_FRHE): New Macro. (GET_HSR0_FRLE): New Macro. (GET_HSR0_GRHE): New Macro. (GET_HSR0_GRLE): New Macro. (frv_ec): New value for FRV_EC_COMMIT_EXCEPTION. (GET_ESFR): New bit ordering. (SET_ESFR): New bit ordering. * cpu.c,cpu.h,decode.c,decode.h,model.c,sem.c: Regenerate.1999-12-10 Michael Meissner <meissner@cygnus.com> * Makefile.in (sim-if.o): Add eng.h dependency.1999-12-09 Dave Brolley <brolley@cygnus.com> * mloop.in (execute): Pass sc->first_insn_p to @cpu@_model_insn_before. Pass sc->last_insn_p to @cpu@_model_insn_before. (main loop): Compute sc->first_insn_p. * frv.c (frvbf_model_insn_before): Set state variables. (frvbf_model_insn_after): Count basic cycles. Set state variables. (frvbf_model_fr500_u_integer): Remove. * arch.h,cpu.h,decode.h,model.c: Regenerate.1999-12-07 Dave Brolley <brolley@cygnus.com> * sim-main.h (cache.h): Include it. (insn_cache): New member. (data_cache): New member. (CPU_INSN_CACHE): New macro. (CPU_DATA_CACHE): New macro. * sim-if.c (WANT_CPU): New macro. (WANT_CPU_FRVBF): New macro. (sim_open): Call sim_add_option_table. Call frv_cache_init for the data and insn caches for each cpu. (sim_close): Call frv_cache_term for the insn and data caches of each cpu. * mloop.in (extract): Read insn from the cache. (main loop): Access the insn cache in order to maintain stats. * memory.c (data_non_cache_access): New function. (insn_non_cache_access): New function. (frvbf_read_mem_QI): Attempt to read from the cache first. (frvbf_read_mem_UQI): Ditto. (frvbf_read_mem_HI): Ditto. (frvbf_read_mem_UHI): Ditto. (frvbf_read_mem_SI): Ditto. (frvbf_read_mem_DI): Ditto. (frvbf_read_mem_DF): Ditto. (frvbf_read_imem_USI): New function. (frvbf_write_mem_QI): Write through the cache is it is enabled. (frvbf_write_mem_UQI): Ditto. (frvbf_write_mem_HI): Ditto. (frvbf_write_mem_UHI): Ditto. (frvbf_write_mem_SI): Ditto. (frvbf_write_mem_DI): Ditto. (frvbf_write_mem_DF): Ditto. (frvbf_mem_set_QI): New function. (frvbf_mem_set_HI): New function. (frvbf_mem_set_SI): New function. (frvbf_mem_set_DI): New function. (frvbf_mem_set_DF): New function. (frvbf_mem_set_XI): New function. * interrupts.c (frv_save_data_written_for_interrupts): Handle CGEN_FN_MEM_QI_WRITE, CGEN_FN_MEM_HI_WRITE, CGEN_FN_MEM_SI_WRITE, CGEN_FN_MEM_DI_WRITE, CGEN_FN_MEM_DF_WRITE, CGEN_FN_MEM_XI_WRITE. * frv.c (frvbf_load_quad_GR): Call frvbf_read_mem_SI. Call sim_queue_fn_mem_xi_write. (frvbf_load_quad_FRint): Call frvbf_read_mem_SI. Call sim_queue_fn_mem_xi_write. (frvbf_load_quad_CPR): Call frvbf_read_mem_SI. Call sim_queue_fn_mem_xi_write. (frvbf_insn_cache_preload): New function. (frvbf_data_cache_preload): New function. (frvbf_insn_cache_unlock): New function. (frvbf_data_cache_unlock): New function. (frvbf_insn_cache_invalidate): New function. (frvbf_data_cache_invalidate): New function. (frvbf_data_cache_flush): New function. * frv-sim.h (sim-options.h): Include it. (GET_HSR0): New macro. (SET_HSR0): New macro. (GET_HSR0_ICE): New macro. (SET_HSR0_ICE): New macro. (GET_HSR0_DCE): New macro. (SET_HSR0_DCE): New macro. (GET_HSR0_CBM): New macro. (GET_HSR0_RME): New macro. (GET_IHSR8): New macro. (GET_IHSR8_NBC): New macro. (frvbf_insn_cache_preload): New function. (frvbf_data_cache_preload): New function. (frvbf_insn_cache_unlock): New function. (frvbf_data_cache_unlock): New function. (frvbf_insn_cache_invalidate): New function. (frvbf_data_cache_invalidate): New function. (frvbf_data_cache_flush): New function. (insn_non_cache_access): New function. (frvbf_read_imem_USI): New function. (frvbf_mem_set_QI): New function. (frvbf_mem_set_HI): New function. (frvbf_mem_set_SI): New function. (frvbf_m
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -