diff options
| author | Xavier ASUS <xavi92psx@gmail.com> | 2019-10-18 00:31:54 +0200 |
|---|---|---|
| committer | Xavier ASUS <xavi92psx@gmail.com> | 2019-10-18 00:31:54 +0200 |
| commit | 268a53de823a6750d6256ee1fb1e7707b4b45740 (patch) | |
| tree | 42c1799a9a82b2f7d9790ee9fe181d72a7274751 /sim/ucsim/sim.src/brkcl.h | |
| download | sdcc-gas-268a53de823a6750d6256ee1fb1e7707b4b45740.tar.gz | |
sdcc-3.9.0 fork implementing GNU assembler syntax
This fork aims to provide better support for stm8-binutils
Diffstat (limited to 'sim/ucsim/sim.src/brkcl.h')
| -rw-r--r-- | sim/ucsim/sim.src/brkcl.h | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/sim/ucsim/sim.src/brkcl.h b/sim/ucsim/sim.src/brkcl.h new file mode 100644 index 0000000..6de5ed8 --- /dev/null +++ b/sim/ucsim/sim.src/brkcl.h @@ -0,0 +1,139 @@ +/* + * Simulator of microcontrollers (sim.src/brkcl.h) + * + * Copyright (C) 1999,99 Drotos Daniel, Talker Bt. + * + * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu + * + */ + +/* This file is part of microcontroller simulator: ucsim. + +UCSIM is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +UCSIM is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with UCSIM; see the file COPYING. If not, write to the Free +Software Foundation, 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. */ +/*@1@*/ + +#ifndef SIM_BRKCL_HEADER +#define SIM_BRKCL_HEADER + +#include "ddconfig.h" + +// prj +#include "pobjcl.h" +#include "stypes.h" + +// sim +#include "memcl.h" + + +/* + * Base object of breakpoints + */ + +class cl_brk: public cl_base +{ +protected: + class cl_address_space *mem; +public: + int nr; + t_addr addr; + enum brk_perm perm; // permanency (FIX,DYNAMIC) + int hit; + int cnt; + chars cond; + chars commands; + + 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 bool condition(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); +}; + + +/* + * FETCH type of breakpoints + */ + +class cl_fetch_brk: public cl_brk +{ +public: + uchar code; + + 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); } +}; + + +/* + * Base of EVENT type of breakpoints + */ + +class cl_ev_brk: public cl_brk +{ +public: + 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 enum brk_event get_event(void) { return(event); } + virtual bool match(struct event_rec *ev); +}; + + +/* + * Collection of breakpoint sorted by address + */ + +class brk_coll: public cl_sorted_list +{ +public: + class cl_address_space/*rom*/ *rom; +public: + brk_coll(t_index alimit, t_index adelta, class cl_address_space/*rom*/*arom); + virtual void *key_of(void *item); + virtual int compare(void *key1, 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); +}; + + +#endif + +/* End of brkcl.h */ |
