]> git.gag.com Git - fw/sdcc/blobdiff - sim/ucsim/sim.src/brkcl.h
Merge branch ucsim-034-pre3 to main trunk; new version 0.4
[fw/sdcc] / sim / ucsim / sim.src / brkcl.h
index 59fe1a77c32b4ee5cb9287f27b19b74f4726bb0d..b5ed8a800c32468b840eb3befc0ad22619e94380 100644 (file)
@@ -44,6 +44,8 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 
 class cl_brk: public cl_base
 {
+protected:
+  class cl_mem *mem;
 public:
   int nr;
   t_addr addr;
@@ -51,10 +53,14 @@ 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_mem *imem, int inr, t_addr iaddr,
+        enum brk_perm iperm, int ihit);
+  virtual ~cl_brk(void);
 
+  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 +74,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_mem *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,13 +89,15 @@ 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_mem *imem, int inr, t_addr iaddr, enum brk_perm iperm,
+           int ihit, enum brk_event ievent, const char *iid);
+  cl_ev_brk(class cl_mem *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 enum brk_event get_event(void) { return(event); }
   virtual bool match(struct event_rec *ev);
 };
 
@@ -96,91 +106,98 @@ public:
  * WRITE IRAM
  */
 
-class cl_wi_brk: public cl_ev_brk
+/*class cl_wi_brk: public cl_ev_brk
 {
 public:
-  cl_wi_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit);
+  cl_wi_brk(class cl_mem *imem, 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
+/*class cl_ri_brk: public cl_ev_brk
 {
 public:
-  cl_ri_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit);
+  cl_ri_brk(class cl_mem *imem, 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
+/*class cl_wx_brk: public cl_ev_brk
 {
 public:
-  cl_wx_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit);
+  cl_wx_brk(class cl_mem *imem, 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
+/*class cl_rx_brk: public cl_ev_brk
 {
 public:
-  cl_rx_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit);
+  cl_rx_brk(class cl_mem *imem, 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
+/*class cl_ws_brk: public cl_ev_brk
 {
 public:
-  cl_ws_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit);
+  cl_ws_brk(class cl_mem *imem, 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
+/*class cl_rs_brk: public cl_ev_brk
 {
 public:
-  cl_rs_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit);
+  cl_rs_brk(class cl_mem *imem, 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
+/*class cl_rc_brk: public cl_ev_brk
 {
 public:
-  cl_rc_brk(int inr, t_addr iaddr, enum brk_perm iperm, int ihit);
+  cl_rc_brk(class cl_mem *imem, int inr, t_addr iaddr, enum brk_perm iperm,
+           int ihit);
 
   virtual bool match(struct event_rec *ev);
-};
+};*/
 
 
 /*
@@ -190,9 +207,9 @@ public:
 class brk_coll: public cl_sorted_list
 {
 public:
-  class cl_rom *rom;
+  class cl_mem/*rom*/ *rom;
 public:
-  brk_coll(t_index alimit, t_index adelta, class cl_rom *arom);
+  brk_coll(t_index alimit, t_index adelta, class cl_mem/*rom*/ *arom);
   virtual void *key_of(void *item);
   virtual int  compare(void *key1, void *key2);
 
@@ -201,6 +218,7 @@ public:
 
   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);