Index: sid/component/glue/glue.cxx =================================================================== RCS file: /cvs/src/src/sid/component/glue/glue.cxx,v retrieving revision 1.13 diff -c -p -r1.13 glue.cxx *** sid/component/glue/glue.cxx 29 Aug 2006 17:47:22 -0000 1.13 --- sid/component/glue/glue.cxx 29 Aug 2006 20:31:19 -0000 *************** probing_bus::writeAny(host_int_4 addr, D *** 469,480 **** this->counter ++; if (this->counter >= this->prober->sample_interval) { if (this->verbose_p) this->traceAccess (addr, data, code, s); this->counter = 0; // drive informational pins ! this->prober->address_pin.drive (this->prober->base_address + addr); typename DataType::host_int_type d_host = data; // natural endianness host_int_8 d_wide(d_host); // widen this->prober->data_high_pin.drive ((d_wide >> 32) & 0xFFFFFFFF); --- 469,481 ---- this->counter ++; if (this->counter >= this->prober->sample_interval) { + addr += this->prober->base_address; if (this->verbose_p) this->traceAccess (addr, data, code, s); this->counter = 0; // drive informational pins ! this->prober->address_pin.drive (addr); typename DataType::host_int_type d_host = data; // natural endianness host_int_8 d_wide(d_host); // widen this->prober->data_high_pin.drive ((d_wide >> 32) & 0xFFFFFFFF); *************** probing_bus::readAny(host_int_4 addr, Da *** 505,516 **** this->counter ++; if (this->counter >= this->prober->sample_interval) { if (this->verbose_p) this->traceAccess (addr, data, code, s); this->counter = 0; // drive informational pins ! this->prober->address_pin.drive (this->prober->base_address + addr); typename DataType::host_int_type d_host = data; // natural endianness host_int_8 d_wide(d_host); // widen this->prober->data_high_pin.drive ((d_wide >> 32) & 0xFFFFFFFF); --- 506,518 ---- this->counter ++; if (this->counter >= this->prober->sample_interval) { + addr += this->prober->base_address; if (this->verbose_p) this->traceAccess (addr, data, code, s); this->counter = 0; // drive informational pins ! this->prober->address_pin.drive (addr); typename DataType::host_int_type d_host = data; // natural endianness host_int_8 d_wide(d_host); // widen this->prober->data_high_pin.drive ((d_wide >> 32) & 0xFFFFFFFF); Index: sid/component/glue/hw-glue-probe-bus.xml =================================================================== RCS file: /cvs/src/src/sid/component/glue/hw-glue-probe-bus.xml,v retrieving revision 1.3 diff -c -p -r1.3 hw-glue-probe-bus.xml *** sid/component/glue/hw-glue-probe-bus.xml 29 Aug 2006 17:47:22 -0000 1.3 --- sid/component/glue/hw-glue-probe-bus.xml 29 Aug 2006 20:31:19 -0000 *************** *** 18,24 **** ! --- 18,24 ---- ! *************** *** 55,61 **** pins. In sequence, the following output pins are driven:

  • ! address - address parameter added to the value of the base-address attribute
  • data-high - top 32 bits of bus data being read/written
  • --- 55,62 ---- pins. In sequence, the following output pins are driven:

    • ! address - address parameter added to the value of the ! base-address attribute
    • data-high - top 32 bits of bus data being read/written
    • *************** *** 146,151 **** --- 147,173 ----

      A statistics-gathering component could attach to the sampling output pins to maintain a picture of a program's memory access patterns.

      + +

      + The base-address attribute should only be used if + the downstream component has a fixed address within the system. The + base-address attribute is not suitable for situations in + which more than one address range is mapped onto the upstream bus.

      +

      + Consider the example below in which a single hw-glue-probe-bus is used to trace + two address ranges.

      + + new hw-glue-probe-bus bus-prober + new SOME_KIND_OF_CPU cpu + new SOME_KIND_OF_TRANSPARENT_MAPPER probe-mapper + new SOME_KIND_OF_MAPPER mapper + connect-bus cpu insn-memory probe-mapper access-port + connect-bus probe-mapper [0-1023] bus-prober upstream + connect-bus probe-mapper [1024-2047] mapper access-port + connect-bus probe-mapper [2048-3071] bus-prober upstream + connect-bus bus-prober downstream mapper access-port + set bus-prober trace? 1 +