X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=sim%2Fucsim%2Fsim.src%2Fbrk.cc;h=12b87d6c034adb7d8ecbb078ffe61ed92dabe5c6;hb=34d14506fd0c12ee5434fec0f9dec27753e1aab5;hp=b18b89f3d50d6ee81b2b602218ca5a9797ed1a2a;hpb=8c8f34ff4281a55d2f535335c02999246e9e12f2;p=fw%2Fsdcc diff --git a/sim/ucsim/sim.src/brk.cc b/sim/ucsim/sim.src/brk.cc index b18b89f3..12b87d6c 100644 --- a/sim/ucsim/sim.src/brk.cc +++ b/sim/ucsim/sim.src/brk.cc @@ -38,7 +38,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA * Base object of breakpoints */ -cl_brk::cl_brk(class cl_mem *imem, int inr, t_addr iaddr, +cl_brk::cl_brk(class cl_address_space *imem, int inr, t_addr iaddr, enum brk_perm iperm, int ihit): cl_base() { @@ -84,7 +84,7 @@ cl_brk::do_hit(void) * FETCH type of breakpoint */ -cl_fetch_brk::cl_fetch_brk(class cl_mem *imem, int inr, t_addr iaddr, +cl_fetch_brk::cl_fetch_brk(class cl_address_space *imem, int inr, t_addr iaddr, enum brk_perm iperm, int ihit): cl_brk(imem, inr, iaddr, iperm, ihit) { @@ -102,7 +102,7 @@ cl_fetch_brk::type(void) * Base of EVENT type of breakpoints */ -cl_ev_brk::cl_ev_brk(class cl_mem *imem, int inr, t_addr iaddr, +cl_ev_brk::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_brk(imem, inr, iaddr, iperm, ihit) @@ -112,7 +112,7 @@ cl_ev_brk::cl_ev_brk(class cl_mem *imem, int inr, t_addr iaddr, mem = imem; } -cl_ev_brk::cl_ev_brk(class cl_mem *imem, int inr, t_addr iaddr, +cl_ev_brk::cl_ev_brk(class cl_address_space *imem, int inr, t_addr iaddr, enum brk_perm iperm, int ihit, char op): cl_brk(imem, inr, iaddr, iperm, ihit) { @@ -147,131 +147,20 @@ cl_ev_brk::match(struct event_rec *ev) } -/* - * WRITE IRAM type of EVENT breakpoints - */ - -/*cl_wi_brk::cl_wi_brk(class cl_mem *imem, int inr, t_addr iaddr, - enum brk_perm iperm, int ihit): - cl_ev_brk(imem, inr, iaddr, iperm, ihit, brkWIRAM, "wi") -{} - -bool -cl_wi_brk::match(struct event_rec *ev) -{ - return(ev->wi == addr); -}*/ - - -/* - * READ IRAM type of EVENT breakpoints - */ - -/*cl_ri_brk::cl_ri_brk(class cl_mem *imem, int inr, t_addr iaddr, - enum brk_perm iperm, int ihit): - cl_ev_brk(imem, inr, iaddr, iperm, ihit, brkRIRAM, "ri") -{} - -bool -cl_ri_brk::match(struct event_rec *ev) -{ - return(ev->ri == addr); -}*/ - - -/* - * WRITE XRAM type of EVENT breakpoints - */ - -/*cl_wx_brk::cl_wx_brk(class cl_mem *imem, int inr, t_addr iaddr, - enum brk_perm iperm, int ihit): - cl_ev_brk(imem, inr, iaddr, iperm, ihit, brkWXRAM, "wx") -{} - -bool -cl_wx_brk::match(struct event_rec *ev) -{ - return(ev->wx == addr); -}*/ - - -/* - * READ XRAM type of EVENT breakpoints - */ - -/*cl_rx_brk::cl_rx_brk(class cl_mem *imem, int inr, t_addr iaddr, - enum brk_perm iperm, int ihit): - cl_ev_brk(imem, inr, iaddr, iperm, ihit, brkRXRAM, "rx") -{} - -bool -cl_rx_brk::match(struct event_rec *ev) -{ - return(ev->rx == addr); -}*/ - - -/* - * WRITE SFR type of EVENT breakpoints - */ - -/*cl_ws_brk::cl_ws_brk(class cl_mem *imem, int inr, t_addr iaddr, - enum brk_perm iperm, int ihit): - cl_ev_brk(imem, inr, iaddr, iperm, ihit, brkWSFR, "ws") -{} - -bool -cl_ws_brk::match(struct event_rec *ev) -{ - return(ev->ws == addr); -}*/ - - -/* - * READ SFR type of EVENT breakpoints - */ - -/*cl_rs_brk::cl_rs_brk(class cl_mem *imem, int inr, t_addr iaddr, - enum brk_perm iperm, int ihit): - cl_ev_brk(imem, inr, iaddr, iperm, ihit, brkRSFR, "rs") -{} - -bool -cl_rs_brk::match(struct event_rec *ev) -{ - return(ev->rs == addr); -}*/ - - -/* - * READ CODE type of EVENT breakpoints - */ - -/*cl_rc_brk::cl_rc_brk(class cl_mem *imem, int inr, t_addr iaddr, - enum brk_perm iperm, int ihit): - cl_ev_brk(imem, inr, iaddr, iperm, ihit, brkRCODE, "rc") -{} - -bool -cl_rc_brk::match(struct event_rec *ev) -{ - return(ev->rc == addr); -}*/ - - /* * Collection of break-points * * This is a sorted collection, sorted by nr field of brk items. */ -brk_coll::brk_coll(t_index alimit, t_index adelta, class cl_mem *arom): - cl_sorted_list(alimit, adelta) +brk_coll::brk_coll(t_index alimit, t_index adelta, + class cl_address_space *arom): + cl_sorted_list(alimit, adelta, "breakpoints") { rom= arom; } -void * +const void * brk_coll::key_of(void *item) { return((void *)&(((class cl_brk *)(item))->nr)); @@ -279,7 +168,7 @@ brk_coll::key_of(void *item) int -brk_coll::compare(void *key1, void *key2) +brk_coll::compare(const void *key1, const void *key2) { int k1, k2; @@ -374,9 +263,8 @@ class cl_brk * brk_coll::get_bp(t_addr addr, int *idx) { if (rom && - addr < rom->size && - /*rom->bp_map->get(addr)*/ - rom->get_cell_flag(addr, CELL_FETCH_BRK)) + rom->valid_address(addr) && + rom->get_cell_flag(addr, CELL_FETCH_BRK)) { for (*idx= 0; *idx < count; (*idx)++) { @@ -406,8 +294,7 @@ bool brk_coll::bp_at(t_addr addr) { return(rom && - addr < rom->size && - /*rom->bp_map->get(addr)*/ + rom->valid_address(addr) && rom->get_cell_flag(addr, CELL_FETCH_BRK)); }