28.12.2014 Views

sparc-architecture-2011-1728132

sparc-architecture-2011-1728132

sparc-architecture-2011-1728132

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.

The instruction following a delayed control-transfer instruction is called a delay instruction. Setting<br />

the annul bit in a conditional delayed control-transfer instruction causes the delay instruction to be<br />

annulled (that is, to have no effect) if and only if the branch is not taken. Setting the annul bit in an<br />

unconditional delayed control-transfer instruction (“branch always”) causes the delay instruction to<br />

be always annulled.<br />

Note<br />

The SPARC V8 <strong>architecture</strong> specified that the delay instruction<br />

was always fetched, even if annulled, and that an annulled<br />

instruction could not cause any traps. The SPARC V9<br />

<strong>architecture</strong> does not require the delay instruction to be fetched<br />

if it is annulled.<br />

Branch and CALL instructions use PC-relative displacements. The jump and link (JMPL) and return<br />

(RETURN) instructions use a register-indirect target address. They compute their target addresses<br />

either as the sum of two R registers or as the sum of an R register and a 13-bit signed immediate<br />

value. The “branch on condition codes without prediction” instruction provides a displacement of ±8<br />

Mbytes; the “branch on condition codes with prediction” instruction provides a displacement of ±1<br />

Mbyte; the “branch on register contents” instruction provides a displacement of ±128 Kbytes; and the<br />

CALL instruction’s 30-bit word displacement allows a control transfer to any address within ± 2<br />

gigabytes (± 2 31 bytes).<br />

Note<br />

The return from privileged trap instructions (DONE and<br />

RETRY) get their target address from the appropriate TPC or<br />

TNPC register.<br />

3.3.4 State Register Access<br />

3.3.4.1 Ancillary State Registers<br />

The read and write ancillary state register instructions read and write the contents of ancillary state<br />

registers visible to nonprivileged software (Y, CCR, ASI, PC, TICK, and FPRS) and some registers<br />

visible only to privileged software (SOFTINT and STICK_CMPR).<br />

IMPL. DEP. #8-V8-Cs20: Ancillary state registers (ASRs) in the range 0–27 that are not defined in<br />

Oracle SPARC Architecture <strong>2011</strong> are reserved for future architectural use.<br />

IMPL. DEP. #9-V8-Cs20: The privilege level required to execute each of the implementationdependent<br />

read/write ancillary state register instructions (for ASRs 28–31) is implementation<br />

dependent.<br />

3.3.4.2 PR State Registers<br />

The read and write privileged register instructions (RDPR and WRPR) read and write the contents of<br />

state registers visible only to privileged software (TPC, TNPC, TSTATE, TT, TICK, TBA, PSTATE, TL,<br />

PIL, CWP, CANSAVE, CANRESTORE, CLEANWIN, OTHERWIN, and WSTATE).<br />

3.3.5 Floating-Point Operate<br />

Floating-point operate (FPop) instructions perform all floating-point calculations; they are register-toregister<br />

instructions that operate on the floating-point registers. FPops compute a result that is a<br />

function of one , two, or three source operands. The groups of instructions that are considered FPops<br />

are listed in Floating-Point Operate (FPop) Instructions on page 90.<br />

20 Oracle SPARC Architecture <strong>2011</strong> • Draft D0.9.5d, 18 Jul 2012

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

Saved successfully!

Ooh no, something went wrong!