1/*
2 * Copyright (c) 2015, University of Kaiserslautern
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met:
8 *

--- 52 unchanged lines hidden (view full) ---

61 mem = new unsigned char[size];
62
63 SC_METHOD(execute_transaction_process);
64 sensitive << target_done_event;
65 dont_initialize();
66}
67
68void
69Target::check_address(unsigned long long int addr)
70{
71 if (addr < offset || addr >= offset + size)
72 SC_REPORT_FATAL("Target", "Address out of range. Did you set an "
73 "appropriate size and offset?");
74}
75
76void
77Target::b_transport(tlm::tlm_generic_payload& trans, sc_time& delay)
78{
79 /* Execute the read or write commands */
80 execute_transaction(trans);
81}
82
83unsigned int
84Target::transport_dbg(tlm::tlm_generic_payload& trans)
85{
86 check_address(trans.get_address());
87
88 tlm::tlm_command cmd = trans.get_command();
89 sc_dt::uint64 adr = trans.get_address() - offset;
90 unsigned char* ptr = trans.get_data_ptr();
91 unsigned int len = trans.get_data_length();
92
93 unsigned char *mem_array_ptr = mem + adr;
94
95 /* Load / Store the access: */

--- 112 unchanged lines hidden (view full) ---

208 } else {
209 send_response( *transaction_in_progress );
210 }
211}
212
213void
214Target::execute_transaction(tlm::tlm_generic_payload& trans)
215{
216 check_address(trans.get_address());
217
218 tlm::tlm_command cmd = trans.get_command();
219 sc_dt::uint64 adr = trans.get_address() - offset;
220 unsigned char* ptr = trans.get_data_ptr();
221 unsigned int len = trans.get_data_length();
222 unsigned char* byt = trans.get_byte_enable_ptr();
223 unsigned int wid = trans.get_streaming_width();
224
225 if ( byt != 0 ) {

--- 51 unchanged lines hidden ---