tlb.cc (5891:73084c6bb183) tlb.cc (5894:8091ac99341a)
1/*
2 * Copyright (c) 2001-2005 The Regents of The University of Michigan
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;

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

431{
432 DPRINTF(TLB, "TLB: DTB Fault: A=%#x w=%d ct=%d ft=%d asi=%d\n",
433 a, (int)write, ct, ft, asi);
434 TLB::writeSfsr(write, ct, se, ft, asi);
435 sfar = a;
436}
437
438Fault
1/*
2 * Copyright (c) 2001-2005 The Regents of The University of Michigan
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;

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

431{
432 DPRINTF(TLB, "TLB: DTB Fault: A=%#x w=%d ct=%d ft=%d asi=%d\n",
433 a, (int)write, ct, ft, asi);
434 TLB::writeSfsr(write, ct, se, ft, asi);
435 sfar = a;
436}
437
438Fault
439ITB::translateAtomic(RequestPtr &req, ThreadContext *tc)
439ITB::translateAtomic(RequestPtr req, ThreadContext *tc)
440{
441 uint64_t tlbdata = tc->readMiscRegNoEffect(MISCREG_TLB_DATA);
442
443 Addr vaddr = req->getVaddr();
444 TlbEntry *e;
445
446 assert(req->getAsi() == ASI_IMPLICIT);
447

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

543 cacheState = tlbdata;
544 cacheEntry = e;
545
546 req->setPaddr(e->pte.translate(vaddr));
547 DPRINTF(TLB, "TLB: %#X -> %#X\n", vaddr, req->getPaddr());
548 return NoFault;
549}
550
440{
441 uint64_t tlbdata = tc->readMiscRegNoEffect(MISCREG_TLB_DATA);
442
443 Addr vaddr = req->getVaddr();
444 TlbEntry *e;
445
446 assert(req->getAsi() == ASI_IMPLICIT);
447

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

543 cacheState = tlbdata;
544 cacheEntry = e;
545
546 req->setPaddr(e->pte.translate(vaddr));
547 DPRINTF(TLB, "TLB: %#X -> %#X\n", vaddr, req->getPaddr());
548 return NoFault;
549}
550
551void
552ITB::translateTiming(RequestPtr req, ThreadContext *tc,
553 Translation *translation)
554{
555 assert(translation);
556 translation->finish(translateAtomic(req, tc), req, tc, false);
557}
558
551Fault
559Fault
552DTB::translateAtomic(RequestPtr &req, ThreadContext *tc, bool write)
560DTB::translateAtomic(RequestPtr req, ThreadContext *tc, bool write)
553{
554 /*
555 * @todo this could really use some profiling and fixing to make
556 * it faster!
557 */
558 uint64_t tlbdata = tc->readMiscRegNoEffect(MISCREG_TLB_DATA);
559 Addr vaddr = req->getVaddr();
560 Addr size = req->getSize();

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

842regAccessOk:
843handleMmuRegAccess:
844 DPRINTF(TLB, "TLB: DTB Translating MM IPR access\n");
845 req->setMmapedIpr(true);
846 req->setPaddr(req->getVaddr());
847 return NoFault;
848};
849
561{
562 /*
563 * @todo this could really use some profiling and fixing to make
564 * it faster!
565 */
566 uint64_t tlbdata = tc->readMiscRegNoEffect(MISCREG_TLB_DATA);
567 Addr vaddr = req->getVaddr();
568 Addr size = req->getSize();

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

850regAccessOk:
851handleMmuRegAccess:
852 DPRINTF(TLB, "TLB: DTB Translating MM IPR access\n");
853 req->setMmapedIpr(true);
854 req->setPaddr(req->getVaddr());
855 return NoFault;
856};
857
858void
859DTB::translateTiming(RequestPtr req, ThreadContext *tc,
860 Translation *translation, bool write)
861{
862 assert(translation);
863 translation->finish(translateAtomic(req, tc, write), req, tc, write);
864}
865
850#if FULL_SYSTEM
851
852Tick
853DTB::doMmuRegRead(ThreadContext *tc, Packet *pkt)
854{
855 Addr va = pkt->getAddr();
856 ASI asi = (ASI)pkt->req->getAsi();
857 uint64_t temp;

--- 587 unchanged lines hidden ---
866#if FULL_SYSTEM
867
868Tick
869DTB::doMmuRegRead(ThreadContext *tc, Packet *pkt)
870{
871 Addr va = pkt->getAddr();
872 ASI asi = (ASI)pkt->req->getAsi();
873 uint64_t temp;

--- 587 unchanged lines hidden ---