How do I jump to the reset vector on an S12G?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How do I jump to the reset vector on an S12G?

764 Views
DDuckDDuck
Contributor II

I did this on my old S08DZ... but the S12 compiler won´t like the assembler instructions.... How do I do the same on an S12G?

 

 

   __asm LDHX   $FFFE                // reset vector

    __asm JMP    ,X                            / /Jump and reset!

 

 

 

Many thanks,

 

Lars

Labels (1)
Tags (2)
2 Replies

440 Views
kef2
Senior Contributor IV

From C you can simply

   ((void (*__near)(void))0xFFFE)();

, where __near is pointer type modifier, which you can remove. No matter what memory model, it still will work for S12 and S08.

There's no LDHX instruction in S12. Also ,X addressing mode is not supported. You need to modify your code like this

   __asm LDX   #$FFFE                // reset vector

    __asm JMP    0,X                            / /Jump and reset!

440 Views
keli
Contributor I

The suggested C code violate MISRA C-1998: rule 45. Is there walk-around?

0 Kudos