sc_target.cc (11818:f12963cb9dc2) | sc_target.cc (12048:a280e9bc358d) |
---|---|
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 | 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 |
|
69Target::b_transport(tlm::tlm_generic_payload& trans, sc_time& delay) 70{ 71 /* Execute the read or write commands */ 72 execute_transaction(trans); 73} 74 75unsigned int 76Target::transport_dbg(tlm::tlm_generic_payload& trans) 77{ | 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 |
|
78 tlm::tlm_command cmd = trans.get_command(); 79 sc_dt::uint64 adr = trans.get_address() - offset; 80 unsigned char* ptr = trans.get_data_ptr(); 81 unsigned int len = trans.get_data_length(); 82 83 unsigned char *mem_array_ptr = mem + adr; 84 85 /* Load / Store the access: */ --- 112 unchanged lines hidden (view full) --- 198 } else { 199 send_response( *transaction_in_progress ); 200 } 201} 202 203void 204Target::execute_transaction(tlm::tlm_generic_payload& trans) 205{ | 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 |
|
206 tlm::tlm_command cmd = trans.get_command(); 207 sc_dt::uint64 adr = trans.get_address() - offset; 208 unsigned char* ptr = trans.get_data_ptr(); 209 unsigned int len = trans.get_data_length(); 210 unsigned char* byt = trans.get_byte_enable_ptr(); 211 unsigned int wid = trans.get_streaming_width(); 212 213 if ( byt != 0 ) { --- 51 unchanged lines hidden --- | 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 --- |