tlb.cc (7461:5a07045d0af2) tlb.cc (7603:66d853e566d2)
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

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

350 uint32_t flags = req->getFlags();
351
352 bool is_fetch = (mode == Execute);
353 bool is_write = (mode == Write);
354 bool is_priv = (cpsr.mode != MODE_USER) && !(flags & UserMode);
355
356 DPRINTF(TLBVerbose, "CPSR is user:%d UserMode:%d\n", cpsr.mode == MODE_USER, flags
357 & UserMode);
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

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

350 uint32_t flags = req->getFlags();
351
352 bool is_fetch = (mode == Execute);
353 bool is_write = (mode == Write);
354 bool is_priv = (cpsr.mode != MODE_USER) && !(flags & UserMode);
355
356 DPRINTF(TLBVerbose, "CPSR is user:%d UserMode:%d\n", cpsr.mode == MODE_USER, flags
357 & UserMode);
358 // If this is a clrex instruction, provide a PA of 0 with no fault
359 // This will force the monitor to set the tracked address to 0
360 // a bit of a hack but this effectively clrears this processors monitor
361 if (flags & Clrex){
362 req->setPaddr(0);
363 return NoFault;
364 }
358 if (!is_fetch) {
359 assert(flags & MustBeOne);
360 if (sctlr.a || !(flags & AllowUnaligned)) {
361 if (vaddr & flags & AlignmentMask) {
362 return new DataAbort(vaddr, 0, is_write, ArmFault::AlignmentFault);
363 }
364 }
365 }

--- 198 unchanged lines hidden ---
365 if (!is_fetch) {
366 assert(flags & MustBeOne);
367 if (sctlr.a || !(flags & AllowUnaligned)) {
368 if (vaddr & flags & AlignmentMask) {
369 return new DataAbort(vaddr, 0, is_write, ArmFault::AlignmentFault);
370 }
371 }
372 }

--- 198 unchanged lines hidden ---