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

Calling an Assembly Functon From C (RVMDK)

Hello,

I am struggling to do something that should be very simple: call an assembly function from a C function. Can anyone give me some pointers or an example of how to do this?

I am using uVision 3 with Realview MDK C compiler.

All of the documentation that I am finding points me to use inline assembly commands. However, this won't work, as I need the assembly code to modify the stack pointer.

Here is what I would like the code to:

void ChangeRegion (void)
{
     asm_adjust_sp(0x78000);  //call assembly to change the stack pointer
}

//asm_adjust_spi(Ulong ulAddress)
//1. change stack pointer to 0x4000F000
//2. branch to a the address contained by ulAddress

Any help that you can provide would be greatly appreciated.

Thanks!

Parents
  • The reason for this is that their boot loader does not appear to reset the stack pointer

    you don't need to mess around with the stack to fix this. when passing control from the bootloader to the application, change the processor to SVC mode - or more specifically - make the 'jump to application' function a SWI function. that will allow the addresses of the stacks to be set in the application's startup file code.

Reply
  • The reason for this is that their boot loader does not appear to reset the stack pointer

    you don't need to mess around with the stack to fix this. when passing control from the bootloader to the application, change the processor to SVC mode - or more specifically - make the 'jump to application' function a SWI function. that will allow the addresses of the stacks to be set in the application's startup file code.

Children
No data