Runtime object '_ICMP' in Bootloader code?

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

Runtime object '_ICMP' in Bootloader code?

820 Views
dpaul
Contributor I

Greetings!

 

Using CodeWarrior 5.9.0 for the MC9S0AC32 micro, I am using the pragmas 

 

#pragma MESSAGE WARNING C3605 // enable C3605 warning
<boot loader code here>

#pragma MESSAGE DISABLE C3605 // disable C3605 message

 

to signal if my boot loader code is making object calls outside the pragmas (which won't be there, of course, during boot loading).

 

Sure enough, I get  a couple of the following warnings:

 

Warning: : C3605: Runtime object '_ICMP' used at PC...

 

Has anyone any idea what _ICMP is and how I might rid myself of it (other that trying other random way of coding the same thing in hopes the call will disappear)?

 

Thanks for any comments!

 

Doug

 

PS:  i know!  I know!  Should have the boot loader in a separate app to avoid exactly this problem, but I'm stuck with this inherited approach.  Such is life!

Labels (1)
0 Kudos
Reply
2 Replies

505 Views
kef
Specialist I

See \lib\hc08c\src\rtshc08.c  . It's 16 bits integer compare routine. Try disassembling your code, then find which expression calls _ICMP and modify that expression slightly. On S08 16 bit integer compare is usually done using CPHX instruction.

0 Kudos
Reply

505 Views
CompilerGuru
NXP Employee
NXP Employee

Optimize for time may help with the integer comparison runtime.

Also try to code the 16 bit comparison with operand as constant or variable. When comparing 2 computed expressions, CPHX cannot be easily used.

Daniel

 

0 Kudos
Reply