X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=sim%2Fucsim%2Fsim.src%2Fmem.cc;h=a3508cfe88964547d7ed5518231074b6ed71a71d;hb=80389380ff28b4697e85edd6a0cf30bd00759745;hp=adf34b8cb1f723bc197f552c9fc680940f14290d;hpb=a8b895ee0de37ed91bcc35e1633da977a638e4bf;p=fw%2Fsdcc diff --git a/sim/ucsim/sim.src/mem.cc b/sim/ucsim/sim.src/mem.cc index adf34b8c..a3508cfe 100644 --- a/sim/ucsim/sim.src/mem.cc +++ b/sim/ucsim/sim.src/mem.cc @@ -2,27 +2,27 @@ * Simulator of microcontrollers (mem.cc) * * 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 + Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*@1@*/ @@ -54,7 +54,7 @@ static class cl_mem_error_registry mem_error_registry; * 3rd version of memory system */ -cl_memory::cl_memory(char *id, t_addr asize, int awidth): +cl_memory::cl_memory(const char *id, t_addr asize, int awidth): cl_base() { size= asize; @@ -164,7 +164,7 @@ cl_memory::err_non_decoded(t_addr addr) t_addr -cl_memory::dump(t_addr start, t_addr stop, int bpl, class cl_console *con) +cl_memory::dump(t_addr start, t_addr stop, int bpl, class cl_console_base *con) { int i; t_addr lva= lowest_valid_address(); @@ -175,12 +175,12 @@ cl_memory::dump(t_addr start, t_addr stop, int bpl, class cl_console *con) if (stop > hva) stop= hva; while ((start <= stop) && - (start < hva)) + (start <= hva)) { con->dd_printf(addr_format, start); con->dd_printf(" "); for (i= 0; (i < bpl) && - (start+i < hva) && + (start+i <= hva) && (start+i <= stop); i++) { @@ -198,7 +198,7 @@ cl_memory::dump(t_addr start, t_addr stop, int bpl, class cl_console *con) i++; } for (i= 0; (i < bpl) && - (start+i < hva) && + (start+i <= hva) && (start+i <= stop); i++) { @@ -219,7 +219,7 @@ cl_memory::dump(t_addr start, t_addr stop, int bpl, class cl_console *con) } t_addr -cl_memory::dump(class cl_console *con) +cl_memory::dump(class cl_console_base *con) { return(dump(dump_finished, dump_finished+10*8-1, 8, con)); } @@ -236,7 +236,7 @@ cl_memory::search_next(bool case_sensitive, a= 0; else a= *addr; - + if (a+len > size) return(DD_FALSE); @@ -361,7 +361,7 @@ cl_hw_operator::read(enum hw_cath skip) if (next_operator) next_operator->read(); - return(d); + return(d); } t_mem @@ -538,9 +538,9 @@ cl_memory_cell::read(enum hw_cath skip) return(operators->read(skip)); return(*data); } - + t_mem -cl_memory_cell::get(void) +cl_memory_cell::get(void) { return(*data); } @@ -696,7 +696,7 @@ cl_dummy_cell::set(t_mem val) * Address space */ -cl_address_space::cl_address_space(char *id, +cl_address_space::cl_address_space(const char *id, t_addr astart, t_addr asize, int awidth): cl_memory(id, asize, awidth) { @@ -717,7 +717,7 @@ cl_address_space::~cl_address_space(void) delete dummy; } - + t_mem cl_address_space::read(t_addr addr) { @@ -885,7 +885,7 @@ cl_address_space::undecode_cell(t_addr addr) void cl_address_space::undecode_area(class cl_address_decoder *skip, - t_addr begin, t_addr end,class cl_console *con) + t_addr begin, t_addr end,class cl_console_base *con) { #define D if (con) con->debug D("Undecoding area 0x%x-0x%x of %s\n", begin, end, get_name()); @@ -997,7 +997,7 @@ cl_address_space::set_brk(t_addr addr, class cl_brk *brk) default: //e= '.'; op= 0; - break; + break; } if (op) cell->append_operator(op); @@ -1056,7 +1056,7 @@ cl_address_space_list::add(class cl_address_space *mem) * Memory chip */ -cl_memory_chip::cl_memory_chip(char *id, int asize, int awidth, int initial): +cl_memory_chip::cl_memory_chip(const char *id, int asize, int awidth, int initial): cl_memory(id, asize, awidth) { array= (t_mem *)malloc(size * sizeof(t_mem)); @@ -1166,7 +1166,7 @@ cl_address_decoder::init(void) bool -cl_address_decoder::activate(class cl_console *con) +cl_address_decoder::activate(class cl_console_base *con) { #define D if (con) con->debug D("Activation of an address decoder\n"); @@ -1255,7 +1255,7 @@ bool cl_address_decoder::shrink_out_of(t_addr begin, t_addr end) { t_addr a= as_begin; - + if (!address_space) return(DD_TRUE); if (begin > a) @@ -1313,7 +1313,7 @@ cl_decoder_list::cl_decoder_list(t_index alimit, t_index adelta, bool bychip): by_chip= bychip; } -void * +const void * cl_decoder_list::key_of(void *item) { class cl_address_decoder *d= (class cl_address_decoder *)item; @@ -1324,9 +1324,9 @@ cl_decoder_list::key_of(void *item) } int -cl_decoder_list::compare(void *key1, void *key2) +cl_decoder_list::compare(const void *key1, const void *key2) { - t_addr k1= *((t_addr*)key1), k2= *((t_addr*)key2); + const t_addr k1= *(static_cast(key1)), k2= *(static_cast(key2)); if (k1 == k2) return(0); else if (k1 > k2) @@ -1358,7 +1358,7 @@ cl_error_mem_invalid_address(class cl_memory *amem, t_addr aaddr): } void -cl_error_mem_invalid_address::print(class cl_commander *c) +cl_error_mem_invalid_address::print(class cl_commander_base *c) { c->dd_printf("%s: invalid address ", get_type_name()); c->dd_printf(mem->addr_format, addr); @@ -1375,7 +1375,7 @@ cl_error_mem_non_decoded(class cl_memory *amem, t_addr aaddr): } void -cl_error_mem_non_decoded::print(class cl_commander *c) +cl_error_mem_non_decoded::print(class cl_commander_base *c) { c->dd_printf("%s: access of non-decoded address ", get_type_name()); c->dd_printf(mem->addr_format, addr);