DSPRelated.com
Forums

i2 not restored in interrupt dispatcher

Started by Robert K Yu June 1, 2001
hi all,

can anybody shed light on the following mystery?
I'm using VisualDSP++ 1.0.

With compiler patch 6.0.8 in place, I've noticed the following
behavior on my ADSP-21160 when using interrupt():

C-function F() uses register i2
(interrupt occurs)
:
z3_int_determiner stores i2
z3_int_determiner uses i2 (call this i2')
lib_int_cntrl saves i2'
:
interrupt handler executes & finishes
:
lib_int_cntrl restores i2'
:
return to F()
F() uses register i2'

so i2 is never actually restored for F() and
everything goes to hell.

is z3_int_determiner supposed to restore i2? or is this
the intended behavior?

thanks
-Rob



Did this get broken in 608? I've got 607, and I don't see any reference
to i2 in z3_int_determiner. i2 does get saved and restored in
lib_int_cntrl.

The original library released with 1.0 had a bug where some registers
weren't getting restored in the normal and fast dispatchers, but were
in the super-fast dispatcher.

Ken

On Fri, 01 Jun 2001 20:10:05 -0000, Robert K Yu wrote:

> I'm using VisualDSP++ 1.0.
>
> With compiler patch 6.0.8 in place, I've noticed the following
> behavior on my ADSP-21160 when using interrupt():
>
> C-function F() uses register i2
> (interrupt occurs)
> :
> z3_int_determiner stores i2
> z3_int_determiner uses i2 (call this i2')
> lib_int_cntrl saves i2'
> :
> interrupt handler executes & finishes
> :
> lib_int_cntrl restores i2'
> :
> return to F()
> F() uses register i2'
>
> so i2 is never actually restored for F() and
> everything goes to hell.
>
> is z3_int_determiner supposed to restore i2? or is this
> the intended behavior?





I've been in communication with ADI and they
confirm that this is a new problem with 6.0.8.

--- In adsp@y..., "Kenneth Porter" <kenneth_porter@k...> wrote:
> Did this get broken in 608? I've got 607, and I don't see any
reference
> to i2 in z3_int_determiner. i2 does get saved and restored in
> lib_int_cntrl.
>
> The original library released with 1.0 had a bug where some
registers
> weren't getting restored in the normal and fast dispatchers, but
were
> in the super-fast dispatcher.
>
> Ken
>
> On Fri, 01 Jun 2001 20:10:05 -0000, Robert K Yu wrote:
>
> > I'm using VisualDSP++ 1.0.
> >
> > With compiler patch 6.0.8 in place, I've noticed the following
> > behavior on my ADSP-21160 when using interrupt():
> >
> > C-function F() uses register i2
> > (interrupt occurs)
> > :
> > z3_int_determiner stores i2
> > z3_int_determiner uses i2 (call this i2')
> > lib_int_cntrl saves i2'
> > :
> > interrupt handler executes & finishes
> > :
> > lib_int_cntrl restores i2'
> > :
> > return to F()
> > F() uses register i2'
> >
> > so i2 is never actually restored for F() and
> > everything goes to hell.
> >
> > is z3_int_determiner supposed to restore i2? or is this
> > the intended behavior?