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 --- |