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

Create successful ePaper yourself

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

Application Level Programmers’ Model<br />

application level registers <strong>and</strong> any additional configuration registers are initialized as required by the<br />

subarchitecture of the implementation.<br />

Executing BXJ with Jazelle extension enabled<br />

Executing a BXJ instruction when the JMCR.JE bit is 1, see Jazelle Main Configuration Register (JMCR) on<br />

page A2-77, causes the Jazelle hardware to do one of the following:<br />

enter Jazelle state <strong>and</strong> start executing bytecodes directly from a SUBARCHITECTURE DEFINED address<br />

branch to a SUBARCHITECTURE DEFINED h<strong>and</strong>ler.<br />

Which of these occurs is SUBARCHITECTURE DEFINED.<br />

The Jazelle subarchitecture can use Application Level registers (but not System Level registers) to transfer<br />

information between the Jazelle extension <strong>and</strong> the EJVM. There are SUBARCHITECTURE DEFINED<br />

restrictions on what Application Level registers must contain when a BXJ instruction is executed, <strong>and</strong><br />

Application Level registers have SUBARCHITECTURE DEFINED values when Jazelle state execution ends <strong>and</strong><br />

<strong>ARM</strong> or Thumb state execution resumes.<br />

Jazelle subarchitectures <strong>and</strong> implementations must not use any unallocated bits in Application Level<br />

registers such as the CPSR or FPSCR. All such bits are reserved for future expansion of the <strong>ARM</strong><br />

architecture.<br />

Executing BXJ with Jazelle extension disabled<br />

If a BXJ instruction is executed when the JMCR.JE bit is 0, it is executed identically to a BX instruction with<br />

the same register oper<strong>and</strong>.<br />

This means that BXJ instructions can be executed freely when the JMCR.JE bit is 0. In particular, if an EJVM<br />

determines that it is executing on a processor whose Jazelle extension implementation is trivial or uses an<br />

incompatible subarchitecture, it can set JE == 0 <strong>and</strong> execute correctly. In this case it executes without the<br />

benefit of any Jazelle hardware acceleration that might be present.<br />

Application level configuration <strong>and</strong> control of the Jazelle extension<br />

All registers associated with the Jazelle extension are implemented in coprocessor space as part of<br />

coprocessor 14 (CP14). The registers are accessed using the instructions:<br />

MCR, see MCR, MCR2 on page A8-186<br />

MRC, see MRC, MRC2 on page A8-202.<br />

In a non-trivial implementation at least three registers are required. These are described in:<br />

Jazelle ID Register (JIDR) on page A2-76<br />

Jazelle Main Configuration Register (JMCR) on page A2-77<br />

Jazelle OS Control Register (JOSCR) on page B1-77.<br />

Additional configuration registers might be provided <strong>and</strong> are SUBARCHITECTURE DEFINED.<br />

The following rules apply to all Jazelle extension control <strong>and</strong> configuration registers:<br />

All configuration registers are accessed by CP14 MRC <strong>and</strong> MCR instructions with set to 7.<br />

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

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

Saved successfully!

Ooh no, something went wrong!