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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

6. The precision of the Floating-point Enabled Exception<br />

type Program interrupt is controlled by the<br />

MSR FE0,FE1 bits. When MSR FE0,FE1 =0b01 or<br />

0b10, the interrupt may be imprecise. When such<br />

a Program interrupt is taken, if the address saved<br />

in SRR0 is not the address of the instruction that<br />

caused the exception (i.e. the instruction that<br />

caused FPSCR FEX to be set to 1), ESR PIE is set to<br />

1. When MSR FE0,FE1 =0b11, the interrupt is precise.<br />

When MSR FE0,FE1 =0b00, the interrupt is<br />

masked, and the interrupt will subsequently occur<br />

imprecisely if and when Floating-point Enabled<br />

Exception type Program interrupts are enabled by<br />

setting either or both of MSR FE0,FE1 , and will also<br />

cause ESR PIE to be set to 1. See Section 5.6.7.<br />

Also, exception status on the exact cause is available<br />

in the Floating-Point Status and Control Register<br />

(see Section 4.2.2 and Section 4.4 of Book I).<br />

The precision of the Auxiliary Processor Enabled<br />

Exception type Program interrupt is implementation-dependent.<br />

7. Auxiliary Processor exception status is commonly<br />

provided as part of the implementation.<br />

8. Cache locking and cache locking exceptions are<br />

implementation-dependent.<br />

9. Software must examine the instruction and the<br />

subject TLB entry to determine the exact cause of<br />

the interrupt.<br />

10. If the Embedded.Enhanced Debug category is<br />

enabled, this interrupt is not a critical interrupt.<br />

DSRR0 and DSRR1 are used instead of CSRR0<br />

and CSRR1.<br />

5.6.1 Critical Input Interrupt<br />

A Critical Input interrupt occurs when no higher priority<br />

exception exists (see Section 5.9 on page 569), a Critical<br />

Input exception is presented to the interrupt mechanism,<br />

and MSR CE =1. While the specific definition of a<br />

Critical Input exception is implementation-dependent, it<br />

would typically be caused by the activation of an asynchronous<br />

signal that is part of the system. Also, implementations<br />

may provide an alternative means (in<br />

addition to MSR CE ) for masking the Critical Input interrupt.<br />

CSRR0, CSRR1, and MSR are updated as follows:<br />

CSRR0<br />

Set to the effective address of the next<br />

instruction to be executed.<br />

CSRR1 Set to the contents of the MSR at the time<br />

of the interrupt.<br />

MSR<br />

CM MSR CM is set to MSR ICM .<br />

ME, ICM Unchanged.<br />

DE<br />

Unchanged if category E.ED is supported;<br />

otherwise set to 0<br />

All other defined MSR bits set to 0.<br />

Instruction execution resumes at address IVPR 0:47 ||<br />

IVOR0 48:59 ||0b0000.<br />

Programming Note<br />

Software is responsible for taking any action(s) that<br />

are required by the implementation in order to clear<br />

any Critical Input exception status prior to reenabling<br />

MSR CE in order to avoid another, redundant<br />

Critical Input interrupt.<br />

5.6.2 Machine Check Interrupt<br />

A Machine Check interrupt occurs when no higher priority<br />

exception exists (see Section 5.9 on page 569), a<br />

Machine Check exception is presented to the interrupt<br />

mechanism, and MSR ME =1. The specific cause or<br />

causes of Machine Check exceptions are implementation-dependent,<br />

as are the details of the actions taken<br />

on a Machine Check interrupt.<br />

If the Machine Check Extension is implemented,<br />

MCSRR0, MCSRR1, and MCSR are set, otherwise<br />

CSRR0, CSRR1, and ESR are set. The registers are<br />

updated as follows:<br />

CSRR0/MCSRR0<br />

Set to an instruction address. As closely as<br />

possible, set to the effective address of an<br />

instruction that was executing or about to<br />

be executed when the Machine Check<br />

exception occurred.<br />

CSRR1/MCSRR1<br />

Set to the contents of the MSR at the time<br />

of the interrupt.<br />

MSR<br />

CM MSR CM is set to MSR ICM .<br />

DE<br />

Unchanged if category E.ED is supported;<br />

otherwise set to 0.<br />

All other defined MSR bits set to 0.<br />

ESR/MCSR<br />

Implementation-dependent.<br />

Instruction execution resumes at address IVPR 0:47 ||<br />

IVOR1 48:59 ||0b0000.<br />

Programming Note<br />

If a Machine Check interrupt is caused by an error<br />

in the storage subsystem, the storage subsystem<br />

may return incorrect data, that may be placed into<br />

registers and/or on-chip caches.<br />

554<br />

<strong>Power</strong> ISA -- Book III-E

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

Saved successfully!

Ooh no, something went wrong!