tlb.cc (7697:05b1a077977b) tlb.cc (7705:fd65f85fcc0c)
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

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

371 bool is_write = (mode == Write);
372 bool is_priv = (cpsr.mode != MODE_USER) && !(flags & UserMode);
373
374 DPRINTF(TLBVerbose, "CPSR is user:%d UserMode:%d\n", cpsr.mode == MODE_USER, flags
375 & UserMode);
376 // If this is a clrex instruction, provide a PA of 0 with no fault
377 // This will force the monitor to set the tracked address to 0
378 // a bit of a hack but this effectively clrears this processors monitor
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

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

371 bool is_write = (mode == Write);
372 bool is_priv = (cpsr.mode != MODE_USER) && !(flags & UserMode);
373
374 DPRINTF(TLBVerbose, "CPSR is user:%d UserMode:%d\n", cpsr.mode == MODE_USER, flags
375 & UserMode);
376 // If this is a clrex instruction, provide a PA of 0 with no fault
377 // This will force the monitor to set the tracked address to 0
378 // a bit of a hack but this effectively clrears this processors monitor
379 if (flags & Request::CLREX){
379 if (flags & Request::CLEAR_LL){
380 req->setPaddr(0);
381 req->setFlags(Request::UNCACHEABLE);
380 req->setPaddr(0);
381 req->setFlags(Request::UNCACHEABLE);
382 req->setFlags(Request::CLREX);
382 req->setFlags(Request::CLEAR_LL);
383 return NoFault;
384 }
385 if ((req->isInstFetch() && (!sctlr.i)) ||
386 ((!req->isInstFetch()) && (!sctlr.c))){
387 req->setFlags(Request::UNCACHEABLE);
388 }
389 if (!is_fetch) {
390 assert(flags & MustBeOne);

--- 210 unchanged lines hidden ---
383 return NoFault;
384 }
385 if ((req->isInstFetch() && (!sctlr.i)) ||
386 ((!req->isInstFetch()) && (!sctlr.c))){
387 req->setFlags(Request::UNCACHEABLE);
388 }
389 if (!is_fetch) {
390 assert(flags & MustBeOne);

--- 210 unchanged lines hidden ---