This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Undefined hal_interrupt_stack_call_pending_DSRs
- From: leslie <egeus at rocketmail dot com>
- To: Gary Thomas <gary at mlbassoc dot com>
- Cc: ecos-discuss at sources dot redhat dot com
- Date: Sun, 19 Sep 2004 10:12:50 -0700 (PDT)
- Subject: Re: [ECOS] Undefined hal_interrupt_stack_call_pending_DSRs
Hi,
I am using ARME7T. The following defined in my
packages/hal/arm/arch/current/src/vectors.S:
FUNC_START_ARM(hal_interrupt_stack_call_pending_DSRs, r1)
stmfd sp!,{r4,r5,lr}
// Disable interrupts
mrs r4,cpsr // disable IRQ's
orr r2,r4,#CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE
bic r5,r4,#CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE
msr cpsr,r2
// Switch to interrupt stack
mov r3,sp // save old stack pointer
ldr sp,.__interrupt_stack
stmfd sp!,{r3} // stored at top of interrupt
stack
ldr r2,.irq_level // current number of nested
interrupts
ldr r3,[r2]
add r3,r3,#1 // bump nesting level
str r3,[r2]
msr cpsr,r5 // enable interrupts
THUMB_MODE(r1,20)
bl cyg_interrupt_call_pending_DSRs
ARM_MODE(r1,22)
// Disable interrupts
mrs r1,cpsr // disable IRQ's
orr r2,r1,#CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE
msr cpsr,r2
// Move back to the thread stack.
ldr r2,.irq_level
ldr r3,[r2]
sub r3,r3,#1 // decrement nesting level
str r3,[r2]
ldr sp,[sp] // This should be the saved
stack pointer
msr cpsr,r4 // restore interrupts to
original state
#ifdef __thumb__
ldmfd sp!,{r4,r5,lr} // return
bx lr
#else
ldmfd sp!,{r4,r5,pc} // return
#endif // __thumb__
#endif // CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
I looked thru the other arch, there are also similar codes defined in
the vectors.S. Is that defining the function in assembly? If vectors.S
is not the problem where else should I probably modify to remedy the
problem? Thanks!
Rgds,
Leslie
--- Gary Thomas <gary@mlbassoc.com> wrote:
> On Sun, 2004-09-19 at 10:34, leslie wrote:
> > hello,
> >
> > I posted my problem earlier regarding this error I got while
> installing
> > GoAhead Webserver for eCos:
> >
> > /root/cvs/ecos/packages/kernel/current/src/intr/intr.cxx:595:
> undefined
> > reference to `hal_interrupt_stack_call_pending_DSRs'
> > collect2: ld returned 1 exit status
> > make: *** [webs] Error 1
> >
> > I was told that the hal_interrupt_stack_call_pending_DSRs
> referenced by
> > the kernel is not defined in my vector.S.
> >
> > Surely it was not defined there... How do I define this macro in
> > vector.S? I searched thru the archive there were similar cases but
> no
> > solution. Thanks for the help!
>
> Try looking at all of the standard architectures - this is most
> certainly defined in each of their version of "vectors.S". e.g.
> .../hal/powerpc/arch/current/src/vectors.S
> .../hal/arm/arch/current/src/vectors.S
> .../hal/mips/arch/current/src/vectors.S
> etc.
>
> What hardware architecture [i.e. processor] are you using?
>
> --
> Gary Thomas <gary@mlbassoc.com>
> MLB Associates
>
>
__________________________________
Do you Yahoo!?
New and Improved Yahoo! Mail - 100MB free storage!
http://promotions.yahoo.com/new_mail
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss