* sim/ucsim/*.*, sim/ucsim/configure, sim/ucsim/configure.in:
[fw/sdcc] / sim / ucsim / sim.src / brkcl.h
index 59fe1a77c32b4ee5cb9287f27b19b74f4726bb0d..aa7738840fc7f45bdf2f333245f6ce0fd7606e38 100644 (file)
@@ -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);