Deleted Added
sdiff udiff text old ( 11793:ef606668d247 ) new ( 12406:86bde4a026b5 )
full compact
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;

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

844TLB::translateTiming(RequestPtr req, ThreadContext *tc,
845 Translation *translation, Mode mode)
846{
847 assert(translation);
848 translation->finish(translateAtomic(req, tc, mode), req, tc, mode);
849}
850
851Fault
852TLB::finalizePhysical(RequestPtr req, ThreadContext *tc, Mode mode) const
853{
854 return NoFault;
855}
856
857Cycles
858TLB::doMmuRegRead(ThreadContext *tc, Packet *pkt)
859{
860 Addr va = pkt->getAddr();
861 ASI asi = (ASI)pkt->req->getArchFlags();
862 uint64_t temp;
863
864 DPRINTF(IPR, "Memory Mapped IPR Read: asi=%#X a=%#x\n",
865 (uint32_t)pkt->req->getArchFlags(), pkt->getAddr());
866
867 TLB *itb = dynamic_cast<TLB *>(tc->getITBPtr());
868
869 switch (asi) {
870 case ASI_LSU_CONTROL_REG:
871 assert(va == 0);
872 pkt->set(tc->readMiscReg(MISCREG_MMU_LSU_CTRL));
873 break;
874 case ASI_MMU:
875 switch (va) {

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

1055 bool ignore;
1056 int part_id;
1057 int ctx_id;
1058 PageTableEntry pte;
1059
1060 DPRINTF(IPR, "Memory Mapped IPR Write: asi=%#X a=%#x d=%#X\n",
1061 (uint32_t)asi, va, data);
1062
1063 TLB *itb = dynamic_cast<TLB *>(tc->getITBPtr());
1064
1065 switch (asi) {
1066 case ASI_LSU_CONTROL_REG:
1067 assert(va == 0);
1068 tc->setMiscReg(MISCREG_MMU_LSU_CTRL, data);
1069 break;
1070 case ASI_MMU:
1071 switch (va) {

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

1159 assert(entry_insert != -1 || mbits(va,10,9) == va);
1160 ta_insert = itb->tag_access;
1161 va_insert = mbits(ta_insert, 63,13);
1162 ct_insert = mbits(ta_insert, 12,0);
1163 part_insert = tc->readMiscReg(MISCREG_MMU_PART_ID);
1164 real_insert = bits(va, 9,9);
1165 pte.populate(data, bits(va,10,10) ? PageTableEntry::sun4v :
1166 PageTableEntry::sun4u);
1167 itb->insert(va_insert, part_insert, ct_insert, real_insert,
1168 pte, entry_insert);
1169 break;
1170 case ASI_DTLB_DATA_ACCESS_REG:
1171 entry_insert = bits(va, 8,3);
1172 case ASI_DTLB_DATA_IN_REG:
1173 assert(entry_insert != -1 || mbits(va,10,9) == va);
1174 ta_insert = tag_access;
1175 va_insert = mbits(ta_insert, 63,13);
1176 ct_insert = mbits(ta_insert, 12,0);

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

1197 break;
1198 default:
1199 ignore = true;
1200 }
1201
1202 switch (bits(va,7,6)) {
1203 case 0: // demap page
1204 if (!ignore)
1205 itb->demapPage(mbits(va,63,13), part_id, bits(va,9,9), ctx_id);
1206 break;
1207 case 1: // demap context
1208 if (!ignore)
1209 itb->demapContext(part_id, ctx_id);
1210 break;
1211 case 2:
1212 itb->demapAll(part_id);
1213 break;
1214 default:
1215 panic("Invalid type for IMMU demap\n");
1216 }
1217 break;
1218 case ASI_DMMU:
1219 switch (va) {
1220 case 0x18:

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

1290 pkt->makeAtomicResponse();
1291 return Cycles(1);
1292}
1293
1294void
1295TLB::GetTsbPtr(ThreadContext *tc, Addr addr, int ctx, Addr *ptrs)
1296{
1297 uint64_t tag_access = mbits(addr,63,13) | mbits(ctx,12,0);
1298 TLB *itb = dynamic_cast<TLB *>(tc->getITBPtr());
1299 ptrs[0] = MakeTsbPtr(Ps0, tag_access,
1300 c0_tsb_ps0,
1301 c0_config,
1302 cx_tsb_ps0,
1303 cx_config);
1304 ptrs[1] = MakeTsbPtr(Ps1, tag_access,
1305 c0_tsb_ps1,
1306 c0_config,

--- 115 unchanged lines hidden ---