05.02.2013 Views

ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition

ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition

ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Common Memory System <strong>Architecture</strong> Features<br />

AlignmentFault(address, FALSE);<br />

else // if legacy non alignment-checking configuration<br />

VA = Align(address, size);<br />

// MMU or MPU<br />

memaddrdesc = TranslateAddress(VA, privileged, FALSE);<br />

// Memory array access, <strong>and</strong> sort out endianness<br />

value = _Mem[memaddrdesc, size];<br />

if CPSR.E == ‘1’ then<br />

value = BigEndianReverse(value, size);<br />

return value;<br />

// Assignment form<br />

MemA_with_priv[bits(32) address, integer size, boolean privileged] = bits(8*size) value<br />

// Sort out alignment<br />

if address == Align(address, size) then<br />

VA = address;<br />

elsif SCTLR.A == ‘1’ || SCTLR.U == ‘1’ then<br />

AlignmentFault(address, FALSE);<br />

else // if legacy non alignment-checking configuration<br />

VA = Align(address, size);<br />

// MMU or MPU<br />

memaddrdesc = TranslateAddress(VA, privileged, TRUE);<br />

// Effect on exclusives<br />

if memaddrdesc.memattrs.shareable then<br />

ClearExclusiveByAddress(memaddrdesc.physicaladdress, ProcessorID(), size);<br />

// Sort out endianness, then memory array access<br />

if CPSR.E == ‘1’ then<br />

value = BigEndianReverse(value, size);<br />

_Mem[memaddrdesc,size] = value;<br />

return;<br />

B2.4.5 Unaligned memory accesses<br />

The MemU[] function performs a memory access at the current privilege level, <strong>and</strong> the MemU_unpriv[] function<br />

performs an access that is always unprivileged.<br />

In both cases:<br />

if the SCTLR.A bit is 0, unaligned accesses are supported<br />

if the SCTLR.A bit is 1, unaligned accesses produce Alignment faults.<br />

B2-32 Copyright © 1996-1998, 2000, 2004-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DDI 0406B

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!