This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to do the ARM state change between 64-bit and 32-bit?

Hi,

The latest 64-bit architecture can on both AArch64 and AArch32 state.

Can someone tell me how to utilize this feature so that I can seamlessly integrate algorithms (which are optimized with 32-bit and 64-bit instructions) with applications which are build for 32-bit and 64-bit modes.

Here is the specifics of situation which I am facing right now.

I want to link an ARM shared library which is optimized with 64-bit instructions with my application which is built in 32 bit mode.

At the time of linking I am getting the following error.  "skipping incompatible xxxx.so file".

My build environment is android and unfortunately I don't have the option to build my application in 64-bit mode.

Appreciate your help with inputs.

Thanks, Prasad

Parents
  • I think that is the right reply for this question. It just isn't possible in Android and I don't think anyone plans to support anything like that. The most that happens like that is that a driver or system routine can be in 64 bit mode and be invoked by a 32 bit application. You an do like you say with 32 bit ARM and Thumb code but the overall environment doesn't change when one does that.

    If the library task is a longish one you might be able to pipe the data between a process in 32 bit mode and one in 64 bit mode. It sounds though like you have very little control over the 32 bit application.

    There is a 32 bit mode using the 64 bit instructions being developed, but I don't think it will be on Android and its main purposes are to simplify porting 32 bit legacy code with less baggage and to run some benchmark tests in a way that'll produce compatible results with x86 chips. It would need a different library too but the changes would be less than backporting to ARM 32 bit code.

Reply
  • I think that is the right reply for this question. It just isn't possible in Android and I don't think anyone plans to support anything like that. The most that happens like that is that a driver or system routine can be in 64 bit mode and be invoked by a 32 bit application. You an do like you say with 32 bit ARM and Thumb code but the overall environment doesn't change when one does that.

    If the library task is a longish one you might be able to pipe the data between a process in 32 bit mode and one in 64 bit mode. It sounds though like you have very little control over the 32 bit application.

    There is a 32 bit mode using the 64 bit instructions being developed, but I don't think it will be on Android and its main purposes are to simplify porting 32 bit legacy code with less baggage and to run some benchmark tests in a way that'll produce compatible results with x86 chips. It would need a different library too but the changes would be less than backporting to ARM 32 bit code.

Children
No data