tlb.cc (6691:cd68b6ecd68d) | tlb.cc (6972:b6482c4c89e3) |
---|---|
1/* 2 * Copyright (c) 2001-2005 The Regents of The University of Michigan 3 * Copyright (c) 2007 MIPS Technologies, Inc. 4 * Copyright (c) 2007-2008 The Florida State University 5 * Copyright (c) 2009 The University of Edinburgh 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 267 unchanged lines hidden (view full) --- 276 ; 277 278 hits = read_hits + write_hits; 279 misses = read_misses + write_misses; 280 accesses = read_accesses + write_accesses; 281} 282 283Fault | 1/* 2 * Copyright (c) 2001-2005 The Regents of The University of Michigan 3 * Copyright (c) 2007 MIPS Technologies, Inc. 4 * Copyright (c) 2007-2008 The Florida State University 5 * Copyright (c) 2009 The University of Edinburgh 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 267 unchanged lines hidden (view full) --- 276 ; 277 278 hits = read_hits + write_hits; 279 misses = read_misses + write_misses; 280 accesses = read_accesses + write_accesses; 281} 282 283Fault |
284TLB::translateAtomic(RequestPtr req, ThreadContext *tc, Mode mode) | 284TLB::translateInst(RequestPtr req, ThreadContext *tc) |
285{ | 285{ |
286#if !FULL_SYSTEM | 286 // Instruction accesses must be word-aligned 287 if (req->getVaddr() & 0x3) { 288 DPRINTF(TLB, "Alignment Fault on %#x, size = %d\n", req->getVaddr(), 289 req->getSize()); 290 return new AlignmentFault(); 291 } 292 293 Process * p = tc->getProcessPtr(); 294 295 Fault fault = p->pTable->translate(req); 296 if (fault != NoFault) 297 return fault; 298 299 return NoFault; 300} 301 302Fault 303TLB::translateData(RequestPtr req, ThreadContext *tc, bool write) 304{ |
287 Process * p = tc->getProcessPtr(); 288 289 Fault fault = p->pTable->translate(req); 290 if (fault != NoFault) 291 return fault; 292 293 return NoFault; | 305 Process * p = tc->getProcessPtr(); 306 307 Fault fault = p->pTable->translate(req); 308 if (fault != NoFault) 309 return fault; 310 311 return NoFault; |
312} 313 314Fault 315TLB::translateAtomic(RequestPtr req, ThreadContext *tc, Mode mode) 316{ 317#if !FULL_SYSTEM 318 if (mode == Execute) 319 return translateInst(req, tc); 320 else 321 return translateData(req, tc, mode == Write); |
|
294#else 295 fatal("translate atomic not yet implemented\n"); 296#endif 297} 298 299void 300TLB::translateTiming(RequestPtr req, ThreadContext *tc, 301 Translation *translation, Mode mode) --- 21 unchanged lines hidden --- | 322#else 323 fatal("translate atomic not yet implemented\n"); 324#endif 325} 326 327void 328TLB::translateTiming(RequestPtr req, ThreadContext *tc, 329 Translation *translation, Mode mode) --- 21 unchanged lines hidden --- |