[maemo-developers] Java acceleration/Jazelle

From: Riku Voipio riku.voipio at movial.fi
Date: Wed Jul 18 17:29:37 EEST 2007
Simon Pickering wrote:
>>   The second thought is learn the ABI convention for calling C methods
>> from assembly and you can pass whatever data you need to a function
>> that will do the printing for you.  I'd suggest going with this route
>> since it will be the most straightforward without soldering but also
>> the least versatile.  --You may end up rebooting many, many times and
>> the less overhead there is to initialize before playing around the
>> faster you can try a new idea.  At any rate, I believe the ABI changed
>> when we went to the armel format and so there's a handy description on
>> changes to system calls and so forth here:
>> http://wiki.debian.org/ArmEabiPort  Sorry if I'm pointing out anything
>> that might be obvious, these are just things I had to work through
>> when I was working on this type of thing on OS-less boards.
> Thanks for that pointer, I'd forgotten about that page. It does say how
> registers are passed (but I think it says to system calls rather than some
> random function). I'll have to look at it again and do some more digging (and in
> the meantime save the value of R14 to an array each time the handler code is
> called, then print it out in C after the asm has completed). 
That part is talking about normal function calls. So you have 4 
registers to pass arguments,
rest is passed in stack.

> Does anyone know whether there are there any good docs/books on ARM asm
> programming, telling people these sort of things? This is an interesting (and
> hopefully useful) learning experience, but can be really frustrating when I know
> what I want to do, and pretty much how to, but not quite! :) E.g. calling
> functions in linked libraries, how to call .s file functions from C, what is and
> isn't allowed in in-line asm, etc.
I don't think there is really such a book, but you can use gcc -S to see 
what kind of assembler
gcc generates to call functions. Otoh it sounds what want to know is 
already in jalimo jamvm
in src/os/linux/arm/callNative.S =)

Since the virtual machine is not only running the bytecode, taking jamvm 
(or something else)
as the base could make sense.

More information about the maemo-developers mailing list