page_table.cc (12448:b299e560f1d8) page_table.cc (12455:c88f0b37f433)
1/*
2 * Copyright (c) 2014 Advanced Micro Devices, Inc.
3 * Copyright (c) 2003 The Regents of The University of Michigan
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met: redistributions of source code must retain the above copyright

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

141
142 for (int64_t offset = 0; offset < size; offset += pageSize)
143 if (pTable.find(vaddr + offset) != pTable.end())
144 return false;
145
146 return true;
147}
148
1/*
2 * Copyright (c) 2014 Advanced Micro Devices, Inc.
3 * Copyright (c) 2003 The Regents of The University of Michigan
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met: redistributions of source code must retain the above copyright

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

141
142 for (int64_t offset = 0; offset < size; offset += pageSize)
143 if (pTable.find(vaddr + offset) != pTable.end())
144 return false;
145
146 return true;
147}
148
149bool
150EmulationPageTable::lookup(Addr vaddr, TheISA::TlbEntry &entry)
149TheISA::TlbEntry *
150EmulationPageTable::lookup(Addr vaddr)
151{
152 Addr page_addr = pageAlign(vaddr);
151{
152 Addr page_addr = pageAlign(vaddr);
153
154 PTableItr iter = pTable.find(page_addr);
153 PTableItr iter = pTable.find(page_addr);
155
156 if (iter == pTable.end())
154 if (iter == pTable.end())
157 return false;
158
159 entry = *iter->second;
160 return true;
155 return nullptr;
156 return iter->second;
161}
162
163bool
164EmulationPageTable::translate(Addr vaddr, Addr &paddr)
165{
157}
158
159bool
160EmulationPageTable::translate(Addr vaddr, Addr &paddr)
161{
166 TheISA::TlbEntry entry;
167 if (!lookup(vaddr, entry)) {
162 TheISA::TlbEntry *entry = lookup(vaddr);
163 if (!entry) {
168 DPRINTF(MMU, "Couldn't Translate: %#x\n", vaddr);
169 return false;
170 }
164 DPRINTF(MMU, "Couldn't Translate: %#x\n", vaddr);
165 return false;
166 }
171 paddr = pageOffset(vaddr) + entry.pageStart();
167 paddr = pageOffset(vaddr) + entry->pageStart();
172 DPRINTF(MMU, "Translating: %#x->%#x\n", vaddr, paddr);
173 return true;
174}
175
176Fault
177EmulationPageTable::translate(RequestPtr req)
178{
179 Addr paddr;

--- 46 unchanged lines hidden ---
168 DPRINTF(MMU, "Translating: %#x->%#x\n", vaddr, paddr);
169 return true;
170}
171
172Fault
173EmulationPageTable::translate(RequestPtr req)
174{
175 Addr paddr;

--- 46 unchanged lines hidden ---