O3: Fix offset calculation into storeQueue buffer for store->load forwarding
Calculation of offset to copy from storeQueue[idx].data structure for load to store forwarding fixed to be difference in bytes between store and load virtual addresses. Previous method would induce bug where a load would index into buffer at the wrong location.
This commit is contained in:
parent
c223b887fe
commit
d0b0a55515
1 changed files with 1 additions and 1 deletions
|
@ -616,7 +616,7 @@ LSQUnit<Impl>::read(Request *req, Request *sreqLow, Request *sreqHigh,
|
|||
// If the store's data has all of the data needed, we can forward.
|
||||
if ((store_has_lower_limit && store_has_upper_limit)) {
|
||||
// Get shift amount for offset into the store's data.
|
||||
int shift_amt = req->getVaddr() & (store_size - 1);
|
||||
int shift_amt = req->getVaddr() - storeQueue[store_idx].inst->effAddr;
|
||||
|
||||
memcpy(data, storeQueue[store_idx].data + shift_amt,
|
||||
req->getSize());
|
||||
|
|
Loading…
Reference in a new issue