📄 changelog
字号:
performing the write. (frvbf_mem_set_*): Overwrite the slot information of the interrupt queue element with the information in the interrupt state. * interrupts.c (frv_queue_interrupt): Call frv_set_interrupt_queue_slot. (frv_queue_fp_exception_interrupt): Initialize 'new_element'. (frv_set_interrupt_queue_slot): New function. (esr_for_data_access_exception): New function. (set_edr_register): edr_index is now passed in. (fq_for_exception): New function. (set_fp_exception_registers): Call fq_for_exception. Interrupt queue element now passed in. (set_exception_status_registers): Obtain slot from interrupt queue element. Call esr_for_data_access_exception. Use ESR14 for data_store_error. Use ESR15 for data_access_error. Use EDR0. (frv_save_data_written_for_interrupts): Save slot containing the insn performing the write. * frv-sim.h (struct frv_fp_exception_info): Use frv_fsr_traps and frv_fsr_ftt. (struct frv_interrupt_state): Add 'slot' field. (frv_set_interrupt_queue_slot): New function. (frv_set_write_queue_slot): New function.2000-03-24 Dave Brolley <brolley@redhat.com> * mloop.in (_parallel_write_init): Initialize frv_interrupt_state.imprecise_interrupt. (_parallel_write_queued): After an imprecise interrupt, only perform forced writes and floating point writes (for certain exceptions). * interrupts.c (handle_interrupt): Set frv_interrupt_state.imprecise_interrupt for writeback after an imprecise interrupt. (frv_process_interrupts): No need to clear f_ne_flags. * frv.c (frvbf_signed_integer_divide): Queue writes to GR registers and force them to happen even if there is an overflow exception. (frvbf_force_update): New function. * frv-sim.h (frvbf_force_update): New function. (struct frv_interrupt_state): Add imprecise_interrupt. (FRV_WRITE_QUEUE_FORCE_WRITE): New macro. * sem.c: Regenerate.2000-03-23 Dave Brolley <brolley@redhat.com> * traps.c (frv_rett): Queue FRV_ILLEGAL_INSTRUCTION directly. * registers.c (frv_spr): MCIRL -> MCILR. * interrupts.c (frv_queue_non_implemented_instruction_interrupt): New function. (frv_detect_insn_access_interrupts): Call frv_queue_non_implemented_instruction_interrupt. (frv_process_interrupts): Clear accumulated NE flags. * frv.c (frvbf_media_cop): New function. (frvbf_set_ne_index): Now takes (SIM_CPU *) as first argument. Clear the NE flag of the given target register. (frvbf_model_fr500_u_float_arith): Account for FRdouble registers. (frvbf_model_fr500_u_float_dual_arith): Account for FRdouble registers. (frvbf_model_fr500_u_float_dual_sqrt): New function. (frvbf_model_fr500_u_float_convert): Account for FRdouble registers. (frvbf_model_fr500_u_float_dual_convert): New function. * frv-sim.h (frvbf_media_cop): New function. (GET_FQ): Use H_SPR_FQST0. (SET_FQ): Use H_SPR_FQST0. (SET_FQ_OPC): Use J_SPR_FQOP0. (GET_MSR_EMCI): New macro. (frv_queue_non_implemented_instruction_interrupt): New function. * arch.h,cpu.h,decode.c,decode.h,model.c,sem.c: Regenerate.2000-03-08 Dave Brolley <brolley@redhat.com> * traps.c (frv_rett): Align new_pc. * memory.c (frvbf_read_mem_HI): Align address. (frvbf_read_mem_UHI): Align address. (frvbf_read_mem_SI): Align address. (frvbf_read_mem_DI): Align address. (frvbf_read_mem_DF): Align address. (frvbf_read_imem_USI): Align address. (frvbf_mem_set_HI): Align address. (frvbf_mem_set_SI): Align address. (frvbf_mem_set_DI): Align address. (frvbf_mem_set_DF): Align address. (frvbf_mem_set_XI): Align address. * registers.c (frv_spr): Initialize FSR0.NS to 1. (fr500_spr): Initialize FSR0.NS to 1. * interrupts.c (frv_queue_mem_address_not_aligned_interrupt): Check whether the exception is masked. * frv.c (frvbf_load_quad_GR): Align address. (frvbf_store_quad_GR): Align address. (frvbf_load_quad_FRint): Align address. (frvbf_store_quad_FRint): Align address. (frvbf_load_quad_CPR): Align address. (frvbf_store_quad_CPR): Align address. * frv-sim.h (GET_ISR_EMAM): New macro.2000-03-08 Dave Brolley <brolley@redhat.com> * traps.c (frvbf_division_exception): Check for masked overflow and set NE flags, if necessary. (frvbf_check_recovering_store): Queue writes to the hardware. (check_registers_available): Removed. (which_registers_available): Call frv_{fr,gr}_registers_available. (frvbf_clear_ne_flags): Call check_register_access. (frvbf_commit): Call check_register_access. * registers.h (frv_fr_registers_available): New function. (frv_gr_registers_available): New function. (frv_check_register_access): New function. (frv_check_gr_access): New function. (frv_check_fr_access): New function. * registers.c (frv_spr): Correct initial value of ISR. (fr500_spr): Correct initial value of ISR. (frv_fr_registers_available): New function. (frv_gr_registers_available): New function. (frv_check_register_access): New function. (frv_check_gr_access): New function. (frv_check_fr_access): New function. * interrupts.c (frv_queue_division_exception_interrupt): New function. (set_isr_exception_fields): New function. (set_exception_status_registers): Set ISR fields for division exception. (frv_save_data_written_for_interrupts): Handle CGEN_FN_SF_WRITE. * frv.c (frvbf_h_gr_get_handler): New function. (frvbf_h_gr_set_handler): New function. (frvbf_h_fr_get_handler): New function. (frvbf_h_fr_set_handler): New function. (frvbf_h_spr_get_handler): Remove special handling for ISR. (frvbf_h_spr_set_handler): Remove special handling for ISR. (spr_isr_get_handler): Removed. (spr_isr_set_handler): Removed. (frvbf_signed_integer_divide): New funciton. (frvbf_unsigned_integer_divide): New funciton. * frv-sim.h (frvbf_h_gr_get_handler): New function. (frvbf_h_gr_set_handler): New function. (frvbf_h_fr_get_handler): New function. (frvbf_h_fr_set_handler): New function. (frvbf_signed_integer_divide): New funciton. (frvbf_unsigned_integer_divide): New funciton. (frv_dtt): New enumeration. (struct frv_interrupt_queue_element): Add dtt member. (GET_ISR): New macro. (SET_ISR): New macro. (GET_ISR_EDEM): New macro. (SET_ISR_DTT): New macro. (SET_ISR_AEXC): New macro. (frvbf_division_exception): Add 2 'int' arguments. (frvbf_check_non_excepting_divide): Removed. * cpu.c,cpu.h,decode.c,decode.h,model.c,sem.c: Regenerate.2000-02-29 Dave Brolley <brolley@redhat.com> * traps.c (frv_itrap): Use GET_H_GR, SET_H_GR, GET_H_FR. (frv_rett): Use hardware access macros. Write PSR as a whole. (next_available_nesr): Check that NECR is valid. (next_valid_nesr): Check that NECR is valid. (frvbf_check_non_excepting_load): User new NECR access macros. Don't call hardware access functions. Use cover macros. (check_registers_available): New function. (clear_nesr_near): Check register availability. (clear_ne_flags): Check register availability. (frvbf_clear_ne_flags): Check register availability. (frvbf_commit): Check register availability. (which_registers_available): New function. * sim-main.h (registers.h): #include it. (register_control): New cpu field. (CPU_REGISTER_CONTROL): New macro. * reset.c (frv_initialize): Set HSR0 fields for cache here. (frv_power_on_reset): Initialize SPR registers and RSTR. (frv_hardware_reset): Initialize SPR registers and RSTR. (frv_software_reset): Reset SPR registers and RSTR. * options.c (frv_option_handler): Don't set HSR0 fields for cache here. Call frv_cache_init. * mloop.in (main loop): Check for insn access interrupts before executing the insn. * interrupts.c (frv_queue_external_interrupt): Use GET_H_PSR_ET. (frv_detect_insn_access_interrupts): Don't call hardware access functions directly. Use cover macros. (check_reset): Don't reset RSTR here. (next_available_esr): ESFR -> ESFR_FLAG. (next_available_edr): ESFR -> ESFR_FLAG. (clear_exception_status_registers): Use GET_ESFR and SET_ESFR. ESFR -> ESFR_FLAG. (frv_break_interrupt): Don't call hardware access functions directly. Use cover macros. (frv_program_or_software_interrupt): Ditto. (frv_external_interrupt): Ditto. * frv.c (frvbf_fetch_register): Don't call 'get' functions directly. (frvbf_store_register): Don't call 'set' functions directly. (frvbf_h_gr_double_get_handler): Use GET_H_GR. (frvbf_h_gr_double_set_handler): Use SET_H_GR. (frvbf_h_fr_double_get_handler): Use GET_H_FR. (frvbf_h_fr_double_set_handler): Use SET_H_FR. (frvbf_h_fr_int_get_handler): Use GET_H_FR. (frvbf_h_fr_int_set_handler): Use SET_H_FR. (frvbf_h_cpr_double_get_handler): Use GET_H_CPR. (frvbf_h_cpr_double_set_handler): Use SET_H_CPR. (frvbf_h_gr_quad_set_handler): Use SET_H_GR. (frvbf_h_fr_quad_set_handler): Use SET_H_FR. (frvbf_h_spr_get_handler): Check SPR access. Call renamed functions. Support shadow registers. (frvbf_h_spr_set_handler): Check SPR access. Call renamed functions. Support shadow registers. (spr_psr_get_handler): Renamed from frvbf_h_psr_get_handler. (spr_psr_set_handler): Renamed from frvbf_h_psr_set_handler. (spr_tbr_get_handler): Renamed from frvbf_h_tbr_get_handler. (spr_tbr_set_handler): Renamed from frvbf_h_tbr_set_handler. (spr_bpsr_get_handler): Renamed from frvbf_h_bpsr_get_handler. (spr_bpsr_set_handler): Renamed from frvbf_h_bpsr_set_handler. (spr_ccr_get_handler): Renamed from frvbf_h_ccr_get_handler. (spr_ccr_set_handler): Renamed from frvbf_h_ccr_set_handler. (spr_lr_get_handler): Renamed from frvbf_h_lr_get_handler. (spr_lr_set_handler): Renamed from frvbf_h_lr_set_handler. (spr_cccr_get_handler): Renamed from frvbf_h_cccr_get_handler. (spr_cccr_set_handler): Renamed from frvbf_h_cccr_set_handler. (spr_isr_get_handler): Renamed from frvbf_h_isr_get_handler. (spr_isr_set_handler): Renamed from frvbf_h_isr_set_handler. (spr_sr_get_handler): Renamed from frvbf_h_sr_get_handler. (spr_sr_set_handler): Renamed from frvbf_h_sr_set_handler. (frvbf_h_psr_esr_set_handler): Update to conform to FRV architecture version 1.3a. (spr_ccr_get_handler): Don't reference the hardware directly. (spr_ccr_set_handler): Don't reference the hardware directly. (spr_cccr_get_handler): Don't reference the hardware directly. (spr_cccr_set_handler): Don't reference the hardware directly. (spr_sr_get_handler): New function. (spr_sr_set_handler): New function. (frvbf_switch_supervisor_user_context): Temporarily switch to supervisor mode. (frvbf_store_quad_GR): Don't call handler directly. (frvbf_store_quad_FRint): Don't call handler directly. (frvbf_store_quad_CPR): Don't call handler directly. (frvbf_clear_all_accumulators): Removed. (frvbf_clear_accumulators): New function. (frvbf_model_fr500_u_media): Expand busy_adjustment to 8 members. Account for in_ACCGi and out_ACCGk. * frv-sim.h (RSTR_HARDWARE_RESET): New macro. (RSTR_SOFTWARE_RESET): New macro. (spr_psr_get_handler): Renamed from frvbf_h_psr_get_handler. (spr_psr_set_handler): Renamed from frvbf_h_psr_set_handler. (spr_tbr_get_handler): Renamed from frvbf_h_tbr_get_handler. (spr_tbr_set_handler): Renamed from frvbf_h_tbr_set_handler. (spr_bpsr_get_handler): Renamed from frvbf_h_bpsr_get_handler. (spr_bpsr_set_handler): Renamed from frvbf_h_bpsr_set_handler. (spr_ccr_get_handler): Renamed from frvbf_h_ccr_get_handler. (spr_ccr_set_handler): Renamed from frvbf_h_ccr_set_handler. (spr_lr_get_handler): Renamed from frvbf_h_lr_get_handler. (spr_lr_set_handler): Renamed from frvbf_h_lr_set_handler. (spr_cccr_get_handler): Renamed from frvbf_h_cccr_get_handler. (spr_cccr_set_handler): Renamed from frvbf_h_cccr_set_handler. (spr_isr_get_handler): Renamed from frvbf_h_isr_get_handler. (spr_isr_set_handler): Renamed from frvbf_h_isr_set_handler. (spr_sr_get_handler): Renamed from frvbf_h_sr_get_handler. (spr_sr_set_handler): Renamed from frvbf_h_sr_set_handler. (frvbf_clear_all_accumulators): Removed. (frvbf_clear_accumulators): New function. (GET_HSR0): Use GET_H_SPR. (SET_HSR0): Use SET_H_SPR. (CLEAR_HSR0_ICE): New macro. (CLEAR_HSR0_DCE): New macro. (GET_IHSR8): Use GET_H_SPR. (GET_PSR): New macro. (SET_PSR_ET): New macro. (GET_PSR_PS): New macro. (SET_PSR_S): New macro. (GET_ESFR): Changed to reference entire register. (SET_ESFR): Changed to reference entire register. (GET_ESFR_FLAG): New macro. (SET_ESFR_FLAG): New macro. (NECR_ELOS): Removed. (NECR_NEN): Removed. (NECR_VALID): Removed. (GET_NECR): New macro. (GET_NECR_ELOS): New macro. (GET_NECR_NEN): New macro. (GET_NECR_VALID): New macro. (NESR_RANGE): Removed. (GET_NESR): Use GET_H_SPR. (GET_NE_FLAGS): Use GET_H_SPR. * cache.h (CACHE_INITIALIZED): New macro. * Makefile.in (SIM_OBJS): Add registers.o. (SIM_EXTRA_DEPS): Add registers.h. (registers.o): New target. * cpu.c,cpu.h,decode.c,decode.h,model.c,sem.c: Regenerate.2000-02-17 Dave Brolley <brolley@redhat.com> * interrupts.c (frv_interrupt_table): Update priority order and handler offsets to conform to the architecture version 1.3a. * frv-sim.h (frv_interrupt_kind): Update priority order to conform to the architecture version 1.3a.2000-02-17 Dave Brolley <brolley@redhat.com> * interrupts.c (frv_interrupt_table): Update priority order and handler offsets to conform to the latest specifications. (frv_queue_interrupt): Correct comment. Identical interrupts can be queued. New variable 'iclass' used to test for external interrupts. * frv-sim.h (frv_interrupt_kind): Update priority order to conform to the latest specifications.2000-01-20 Dave Brolley <brolley@redhat.com> * sim-if.c (sim_open): Move frv-specific initialization to frv_initialize in reset.c. * interrupts.c (check_reset): Use RSTR_ADDRESS. Check and reset RSTR status bits for hardware vs software reset. * reset.c: New file. * frv-sim.h (frv_initialize): New function. (frv_power_on_reset): New function. (frv_hardware_reset): New function. (frv_software_reset): New function. (RSTR_ADDRESS): New macro. (RSTR_INITIAL_VALUE): New macro. (GET_RSTR_HR): New macro. (GET_RSTR_SR): New macro. (SET_RSTR_H): New macro. (SET_RSTR_S): New macro. (CLEAR_RSTR_P): New macro. (CLEAR_RSTR_H): New macro. (CLEAR_RSTR_S): New macro. (CLEAR_RSTR_HR): New macro. (CLEAR_RSTR_SR): New macro.2000-01-03 Dave Brolley <brolley@cygnus.com>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -