14.06.2015 Views

Power ISA™ Version 2.03 - Power.org

Power ISA™ Version 2.03 - Power.org

Power ISA™ Version 2.03 - Power.org

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.

<strong>Version</strong> <strong>2.03</strong><br />

If the contents of the XER specifies a length of zero<br />

bytes for a Move Assist instruction, a Data Storage<br />

interrupt does not occur for reasons of address translation,<br />

or storage protection. If such an instruction causes<br />

a Data Storage interrupt for other reasons, the setting<br />

of the DSISR and DAR reflects only these other reasons<br />

listed in the preceding sentence. (E.g., if such an<br />

instruction causes a storage protection violation and a<br />

Data Address Breakpoint match, the DSISR and DAR<br />

are set as if the storage protection violation did not<br />

occur.)<br />

The following registers are set:<br />

SRR0 Set to the effective address of the instruction<br />

that caused the interrupt.<br />

SRR1<br />

33:36 Set to 0.<br />

42:47 Set to 0.<br />

Others Loaded from the MSR.<br />

MSR See Figure 34.<br />

DSISR<br />

32 Set to 0.<br />

33 Set to 1 if MSR DR =1 and the translation for<br />

an attempted access is not found in the primary<br />

PTEG or in the secondary PTEG; otherwise<br />

set to 0.<br />

34:35 Set to 0.<br />

36 Set to 1 if the access is not permitted by the<br />

storage protection mechanism; otherwise<br />

set to 0.<br />

37 Set to 1 if the access is due to a lq, stq,<br />

lwarx, ldarx, stwcx., or stdcx. instruction<br />

that addresses storage that is Write<br />

Through Required or Caching Inhibited;<br />

otherwise set to 0.<br />

38 Set to 1 for a Store, dcbz, or ecowx<br />

instruction; otherwise set to 0.<br />

39:40 Set to 0.<br />

41 Set to 1 if a Data Address Compare match<br />

or a Data Address Breakpoint match<br />

occurs; otherwise set to 0.<br />

42 Set to 0.<br />

43 Set to 1 if execution of an eciwx or ecowx<br />

instruction is attempted when EAR E =0; otherwise<br />

set to 0.<br />

44:63 Set to 0.<br />

DAR<br />

Set to the effective address of a storage<br />

element as described in the following list.<br />

The list should be read from the top down;<br />

the DAR is set as described by the first item<br />

that corresponds to an exception that is<br />

reported in the DSISR. For example, if a<br />

Load instruction causes a storage protection<br />

violation and a Data Address Breakpoint<br />

match (and both are reported in the<br />

DSISR), the DAR is set to the effective<br />

address of a byte in the first aligned doubleword<br />

for which access was attempted in the<br />

page that caused the exception.<br />

a Data Storage exception occurs for<br />

reasons other than a Data Address<br />

Breakpoint match or, for eciwx and<br />

ecowx, EAR E =0<br />

- a byte in the block that caused the<br />

exception, for a Cache Management<br />

instruction<br />

- a byte in the first aligned doubleword<br />

for which access was<br />

attempted in the page that caused<br />

the exception, for a Load, Store,<br />

eciwx, or ecowx instruction (“first”<br />

refers to address order; see<br />

Section 6.7)<br />

undefined, for a Data Address Breakpoint<br />

match, or if eciwx or ecowx is<br />

executed when EAR E =0<br />

For the cases in which the DAR is specified<br />

above to be set to a defined value, if the<br />

interrupt occurs in 32-bit mode the highorder<br />

32 bits of the DAR are set to 0.<br />

If multiple Data Storage exceptions occur for a given<br />

effective address, any one or more of the bits corresponding<br />

to these exceptions may be set to 1 in the<br />

DSISR.<br />

Programming Note<br />

More than one bit may be set to 1 in the DSISR in<br />

the following combinations.<br />

33, {s+}<br />

36, {s+}<br />

36, 37, {s}<br />

37, {s}<br />

{s+}<br />

In this list, “{s}” represents any combination of the<br />

set of bits {38, 41} and “{s+}” adds bit 43 to this set.<br />

Execution resumes at effective address<br />

0x0000_0000_0000_0300.<br />

6.5.4 Data Segment Interrupt<br />

A Data Segment interrupt occurs when no higher priority<br />

exception exists and a data access cannot be performed<br />

because data address translation is enabled<br />

and the effective address of any byte of the storage<br />

location specified by a Load, Store, icbi, dcbz, dcbst,<br />

dcbf[l] eciwx, or ecowx instruction cannot be translated<br />

to a virtual address.<br />

If a stwcx. or stdcx. would not perform its store in the<br />

absence of a Data Segment interrupt, and a non-conditional<br />

Store to the specified effective address would<br />

cause a Data Segment interrupt, it is implementationdependent<br />

whether a Data Segment interrupt occurs.<br />

Chapter 6. Interrupts<br />

447

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

Saved successfully!

Ooh no, something went wrong!