20.02.2013 Views

Sable CPU Module Specification

Sable CPU Module Specification

Sable CPU Module Specification

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.

Copyright © 1993 Digital Equipment Corporation.<br />

3.1.9 Instruction Translation BUffer Page Table Entry Temporary<br />

Register(ITB_PTE_TEMP)<br />

The ITB_PTE_TEMP register is a read-only holding register for ITB_PTE read data.<br />

Reads of the ITB_PTE require two instructions to return the data to the register<br />

file. The first reads the ITB_PTE register to the ITB_PTE_TEMP register. The<br />

second returns the ITB_PTE_TEMP register to the integer register file. The ITB_<br />

PTE_TEMP register is updated on all ITB accesses, both read and write. A read<br />

of the ITB_PTE to the ITB_PTE_TEMP should be followed closely by a read of the<br />

ITB_PTE_TEMP to the register file.<br />

Reading the ITB_PTE_TEMP register is only performed while in PALmode regardless<br />

of the state of the HWE bit in the ICCSR IPR.<br />

Figure 8: ITB_PTE_TEMP<br />

6<br />

3<br />

3<br />

5<br />

3<br />

4<br />

3<br />

3<br />

A<br />

U S E K<br />

RAZ S PFN[33..13] R R R R RAZ<br />

M<br />

E E E E<br />

3.1.10 Exception Address Register (EXC_ADDR)<br />

1<br />

3<br />

1<br />

2<br />

1<br />

1<br />

1<br />

0<br />

0<br />

9<br />

0<br />

8<br />

0<br />

0<br />

ITB_PTE_TEMP<br />

The EXC_ADDR register is a read/write register used to restart the machine after exceptions<br />

or interrupts. The EXC_ADDR register can be read and written by software<br />

by way of the HW_MTPR instruction as well as being written directly by hardware.<br />

The HW_REI instruction executes a jump to the address contained in the EXC_<br />

ADDR register. The EXC_ADDR register is written by hardware after an exception<br />

to provide a return address for PALcode.<br />

The instruction pointed to by the EXC_ADDR register did not complete execution.<br />

Since the PC is longword aligned, the lsb of the EXC_ADDR register is used to<br />

indicate PALmode to the hardware. When the lsb is clear, the HW_REI instruction<br />

executes a jump to native (non-PAL) mode, enabling address translation.<br />

CALL_PAL exceptions load the EXC_ADDR with the PC of the instruction following<br />

the CALL_PAL. This function allows CALL_PAL service routines to return without<br />

needing to increment the value in the EXC_ADDR register.<br />

This feature, however, requires careful treatment in PALcode. Arithmetic traps and<br />

machine check exceptions can pre-empt CALL_PAL exceptions resulting in an incorrect<br />

value being saved in the EXC_ADDR register. In the cases of an arithmetic<br />

trap or a machine check exception, and only in these cases, EXC_ADDR takes<br />

on special meaning. PALcode servicing these two exceptions should interpret a zero<br />

in EXC_ADDR as indicating that the PC in EXC_ADDR is too large by a<br />

value of 4 bytes and subtract 4 before executing a HW_REI from this address. PALcode<br />

should interpret a one in EXC_ADDR as indicating that the PC in EXC_<br />

Functions Located on the DECchip 21064 21

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

Saved successfully!

Ooh no, something went wrong!