Deleted Added
sdiff udiff text old ( 10919:80069a602c83 ) new ( 10978:436d5dde4bb7 )
full compact
1/*
2 * Copyright (c) 2012 Advanced Micro Devices, Inc.
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: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

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

53{
54 if (accessLatency == 0)
55 return true;
56
57 unsigned int bank = mapIndexToBank(idx);
58 assert(bank < banks);
59
60 if (busyBanks[bank].endAccess >= curTick()) {
61 if (!(busyBanks[bank].startAccess == curTick() &&
62 busyBanks[bank].idx == idx)) {
63 return false;
64 } else {
65 // We tried to allocate resources twice
66 // in the same cycle for the same addr
67 return true;
68 }
69 }
70
71 busyBanks[bank].idx = idx;
72 busyBanks[bank].startAccess = curTick();
73 busyBanks[bank].endAccess = curTick() +
74 (accessLatency-1) * m_ruby_system->clockPeriod();
75
76 return true;
77}
78
79unsigned int
80BankedArray::mapIndexToBank(int64 idx)
81{
82 if (banks == 1) {
83 return 0;
84 }
85 return idx % banks;
86}