tlb.cc (8782:10c9297e14d5) | tlb.cc (8806:669e93d79ed9) |
---|---|
1/* 2 * Copyright (c) 2010 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 404 unchanged lines hidden (view full) --- 413 assert(flags & MustBeOne); 414 if (sctlr.a || !(flags & AllowUnaligned)) { 415 if (vaddr & flags & AlignmentMask) { 416 return new DataAbort(vaddr, 0, is_write, ArmFault::AlignmentFault); 417 } 418 } 419 } 420 | 1/* 2 * Copyright (c) 2010 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 404 unchanged lines hidden (view full) --- 413 assert(flags & MustBeOne); 414 if (sctlr.a || !(flags & AllowUnaligned)) { 415 if (vaddr & flags & AlignmentMask) { 416 return new DataAbort(vaddr, 0, is_write, ArmFault::AlignmentFault); 417 } 418 } 419 } 420 |
421 if (!FullSystem) { 422 Addr paddr; 423 Process *p = tc->getProcessPtr(); | 421 Addr paddr; 422 Process *p = tc->getProcessPtr(); |
424 | 423 |
425 if (!p->pTable->translate(vaddr, paddr)) 426 return Fault(new GenericPageTableFault(vaddr)); 427 req->setPaddr(paddr); 428 } | 424 if (!p->pTable->translate(vaddr, paddr)) 425 return Fault(new GenericPageTableFault(vaddr)); 426 req->setPaddr(paddr); |
429 430 return NoFault; 431} 432 433Fault 434TLB::trickBoxCheck(RequestPtr req, Mode mode, uint8_t domain, bool sNp) 435{ 436 return NoFault; --- 128 unchanged lines hidden (view full) --- 565 req->setFlags(Request::UNCACHEABLE); 566 567 // Prevent prefetching from I/O devices. 568 if (req->isPrefetch()) { 569 return new PrefetchAbort(vaddr, ArmFault::PrefetchUncacheable); 570 } 571 } 572 | 427 428 return NoFault; 429} 430 431Fault 432TLB::trickBoxCheck(RequestPtr req, Mode mode, uint8_t domain, bool sNp) 433{ 434 return NoFault; --- 128 unchanged lines hidden (view full) --- 563 req->setFlags(Request::UNCACHEABLE); 564 565 // Prevent prefetching from I/O devices. 566 if (req->isPrefetch()) { 567 return new PrefetchAbort(vaddr, ArmFault::PrefetchUncacheable); 568 } 569 } 570 |
573 if (FullSystem) { 574 if (!bootUncacheability && 575 ((ArmSystem*)tc->getSystemPtr())->adderBootUncacheable(vaddr)) 576 req->setFlags(Request::UNCACHEABLE); 577 } | 571 if (!bootUncacheability && 572 ((ArmSystem*)tc->getSystemPtr())->adderBootUncacheable(vaddr)) 573 req->setFlags(Request::UNCACHEABLE); |
578 579 switch ( (dacr >> (te->domain * 2)) & 0x3) { 580 case 0: 581 domainFaults++; 582 DPRINTF(TLB, "TLB Fault: Data abort on domain. DACR: %#x domain: %#x" 583 " write:%d sNp:%d\n", dacr, te->domain, is_write, te->sNp); 584 if (is_fetch) 585 return new PrefetchAbort(vaddr, --- 140 unchanged lines hidden --- | 574 575 switch ( (dacr >> (te->domain * 2)) & 0x3) { 576 case 0: 577 domainFaults++; 578 DPRINTF(TLB, "TLB Fault: Data abort on domain. DACR: %#x domain: %#x" 579 " write:%d sNp:%d\n", dacr, te->domain, is_write, te->sNp); 580 if (is_fetch) 581 return new PrefetchAbort(vaddr, --- 140 unchanged lines hidden --- |