You need to go to http://infocenter.arm.com. the beaglebone uses a Cortex-A8 which is an ARMv7. Under Cortex-A series processors on the left side Cortex-A8 get the most recent manual r3v2 (rev 3.2). Under ARM Architecture expand Reference Manuals you want the ARMv7-AR (issue C is the most current as of this writing).
Taking that info going to my example
http://github.com/dwelch67/beaglebone_samples
features example on my beaglebone shows:
12345678
Hello World!
413FC082
410330C3
00000000
00001131
00000011
00000000
00000000
00000000
00000002
13112111
00000000
00000000
00000002
12345678
So that appears to be a r3p2 (rev 3.2) core. As the manuals say the ThumbEE, Jazelle, thumb and ARM are supported.
Now the confusing thing is the TRM on the ti website, the ARM trm all say Jazelle is supported, until you focus on this:
Jazelle Extension
The Cortex-A8 processor provides a trivial implementation of the Jazelle Extension. This means that the processor does not accelerate the execution of any bytecodes, and all bytecodes areexecuted by software routines.
In the implementation of the Jazelle Extension:
Jazelle state is not supported
The BXJ instruction behaves as a BX instruction.
Which tells us a few things. Does this really mean that there is no Jazelle hardware in this processor despite other places saying it is?
It also shows us that to run jazelle code you bxj to get there just like you bx to switch between arm and thumb modes. So I tried it:
.globl bxjtest
bxjtest:
ldr r0,=skip
bxj r0
mov r0,#1
bx lr
skip:
mov r0,#2
bx lr
and it looks like the assembler implemented bxj
82000064 <bxjtest>:
82000064: e59f0044 ldr r0, [pc, #68] ; 820000b0 <GET32+0x8>
82000068: e12fff20 bxj r0
8200006c: e3a00001 mov r0, #1
82000070: e12fff1e bx lr
82000074 <skip>:
82000074: e3a00002 mov r0, #2
82000078: e12fff1e bx lr
but the code returns a 2 from the arm instruction at that address. dont know if that means anything or not, maybe there is other stuff you have to do to get Jazelle to work. I get the impression though that there really isnt a jazelle core there, I get the impression you go buy the software library.
The Jazelle docs appear to be the kind that you have to contact ARM to get access to. So I dont know much more than that how to actually use it.
Reading further in the ARM. the ID_ISAR1 register shows a 1 indicating
0b0001
Adds the BXJ instruction, and the J bit in the PSR.
This setting might indicate a trivial implementation of the Jazelle extension.
And, then the ARM ARM description for the ID_PFR0 register has more info than the TRM, it says
A trivial implementation of the Jazelle extension is indicated by the value 0b0001.
And 0b0001 is what we are reading for that field in that register.
the more I dig the more this appears to be a "trivial implementation" which means to me "not there". the JMCR register shows that if it is a trivial implementation then reads should return as zero (RAZ) and writes should be ignored (WI) which they are, I wrote a one, read it back it was a zero. Even so I tried the BXJ instruction and it still executed arm code.