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

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

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

1,363 次查看
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

标签 (1)
标记 (2)
2 回复数

1,039 次查看
kef2
Senior Contributor V

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!

1,039 次查看
keli
Contributor I

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

0 项奖励
回复