Forums

What are the differences between these two IRPs?

Started by xsws5638 April 19, 2005


Take these two IRPs for example:

RESET:
mvkl _c_int00, b0
mvkh _c_int00, b0
b b0 ----------------(1)
......
_NMI:
......
mvkl _func_nmi, b0
mvkh _func_nmi, b0
ldw *b0, b0 ----------------(2)
nop 4
b b0

why does _NMI use sentence(2) to get the value of b0? what the
differences between the function '_c_int00' and '_func_nmi'?




Hi,

is it possible to use a branch via register? Is the register you use - in
your example b0 saved? I dont think so. In my application, I jump to the
interrupt functions like this (using a global symbol without modifying a
register)

b _HWI7_Entry
NOP
NOP
NOP
NOP
NOP
NOP
NOP

When I was using the b b0 type of jump, I always destroyed the b0 content
that some parts of the application needed.

Isnt it required to have the nops after the b instruction? I thought that
after a b, some 3 or 4 more instructions are executed before the jump takes
place. So in your case the processor might execute the code after the b -
and this might not be initialized. Well, Im not sure about that...

A drawback of the b label jump is that it can only handle 21 bit adress
offset. So I had to place the ISRs in the same section than the jump
table...

How is it possible to use the jump via register? I would like to exchange it
in my application...

bye,

Thomas

> Take these two IRPs for example:
>
> RESET:
> mvkl _c_int00, b0
> mvkh _c_int00, b0
> b b0 ----------------(1)
> ......
> _NMI:
> ......
> mvkl _func_nmi, b0
> mvkh _func_nmi, b0
> ldw *b0, b0 ----------------(2)
> nop 4
> b b0
>
> why does _NMI use sentence(2) to get the value of b0? what the
> differences between the function '_c_int00' and '_func_nmi'? >
>