X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=sim%2Fucsim%2Fsim.src%2Fbrkcl.h;h=aa7738840fc7f45bdf2f333245f6ce0fd7606e38;hb=34d14506fd0c12ee5434fec0f9dec27753e1aab5;hp=59fe1a77c32b4ee5cb9287f27b19b74f4726bb0d;hpb=f27cbdc6513b26748661452e50ed3af99fac16a2;p=fw%2Fsdcc diff --git a/sim/ucsim/sim.src/brkcl.h b/sim/ucsim/sim.src/brkcl.h index 59fe1a77..aa773884 100644 --- a/sim/ucsim/sim.src/brkcl.h +++ b/sim/ucsim/sim.src/brkcl.h @@ -44,6 +44,8 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA class cl_brk: public cl_base { +protected: + class cl_address_space *mem; public: int nr; t_addr addr; @@ -51,10 +53,16 @@ public: int hit; int cnt; - cl_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit); - ~cl_brk(void); + cl_brk(class cl_address_space *imem, int inr, t_addr iaddr, + enum brk_perm iperm, int ihit); + virtual ~cl_brk(void); + class cl_address_space *get_mem(void) { return(mem); } + + virtual void activate(void); + virtual void inactivate(void); virtual enum brk_type type(void)= 0; + virtual enum brk_event get_event(void)= 0; virtual bool do_hit(void); }; @@ -68,9 +76,11 @@ class cl_fetch_brk: public cl_brk public: uchar code; - cl_fetch_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit); + cl_fetch_brk(class cl_address_space *imem, int inr, t_addr iaddr, + enum brk_perm iperm, int ihit); virtual enum brk_type type(void); + virtual enum brk_event get_event(void) { return(brkNONE); } }; @@ -81,104 +91,17 @@ public: class cl_ev_brk: public cl_brk { public: - cl_ev_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit, - enum brk_event ievent, const char *iid); - + cl_ev_brk(class cl_address_space *imem, int inr, t_addr iaddr, + enum brk_perm iperm, + int ihit, enum brk_event ievent, const char *iid); + cl_ev_brk(class cl_address_space *imem, int inr, t_addr iaddr, + enum brk_perm iperm, + int ihit, char op); enum brk_event event; const char *id; virtual enum brk_type type(void); - virtual bool match(struct event_rec *ev); -}; - - -/* - * WRITE IRAM - */ - -class cl_wi_brk: public cl_ev_brk -{ -public: - cl_wi_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit); - - virtual bool match(struct event_rec *ev); -}; - - -/* - * READ IRAM - */ - -class cl_ri_brk: public cl_ev_brk -{ -public: - cl_ri_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit); - - virtual bool match(struct event_rec *ev); -}; - - -/* - * WRITE XRAM - */ - -class cl_wx_brk: public cl_ev_brk -{ -public: - cl_wx_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit); - - virtual bool match(struct event_rec *ev); -}; - - -/* - * READ XRAM - */ - -class cl_rx_brk: public cl_ev_brk -{ -public: - cl_rx_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit); - - virtual bool match(struct event_rec *ev); -}; - - -/* - * WRITE SFR - */ - -class cl_ws_brk: public cl_ev_brk -{ -public: - cl_ws_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit); - - virtual bool match(struct event_rec *ev); -}; - - -/* - * READ SFR - */ - -class cl_rs_brk: public cl_ev_brk -{ -public: - cl_rs_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit); - - virtual bool match(struct event_rec *ev); -}; - - -/* - * READ CODE - */ - -class cl_rc_brk: public cl_ev_brk -{ -public: - cl_rc_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit); - + virtual enum brk_event get_event(void) { return(event); } virtual bool match(struct event_rec *ev); }; @@ -190,17 +113,18 @@ public: class brk_coll: public cl_sorted_list { public: - class cl_rom *rom; + class cl_address_space/*rom*/ *rom; public: - brk_coll(t_index alimit, t_index adelta, class cl_rom *arom); - virtual void *key_of(void *item); - virtual int compare(void *key1, void *key2); + brk_coll(t_index alimit, t_index adelta, class cl_address_space/*rom*/*arom); + virtual const void *key_of(void *item); + virtual int compare(const void *key1, const void *key2); virtual bool there_is_event(enum brk_event ev); //virtual int make_new_nr(void); virtual void add_bp(class cl_brk *bp); virtual void del_bp(t_addr addr); + virtual void del_bp(t_index idx, int /*dummy*/); virtual class cl_brk *get_bp(t_addr addr, int *idx); virtual class cl_brk *get_bp(int nr); virtual bool bp_at(t_addr addr);