BSP for MIPS32 4KC

mikeci at acm.org mikeci at acm.org
Wed Sep 10 18:09:03 UTC 2003


>
> You sent this to me and not to the list.  Did you mean for it to
> go to everyone?
>
> mikeci at acm.org wrote:
>
>> Hi!
>>
>> There is another thing here. Modules compiled with mips=3 and mips=1
>> or mips=32 can't be linked together. This is main reason why I think
>> we should stick with mips=32 instead of doing everything with mips=3.
>> Does anyone have better solution?
>
> And no.  The problem Ralf mentioned on the p4xx BSPs is exactly this
> type of thing.  The RTEMS traditional solution is to have LOTS of
> multilibs where needed and then depend on the linker to do the right
> thing.
>
>> Regards
>>
>> Ivica
>>

Hi!

Yes, this was post for the list. Ok. I am satisfied with the BSP I
currently have. There is still one more thing. I don't know if I should
file this as a bug or not. This is the code defined in vectorisrs.c for
r46xx or p4000:

void mips_vector_isr_handlers( CPU_Interrupt_frame *frame )
{
  unsigned int sr;
  unsigned int cause;
  unsigned int i;
  unsigned int mask;

  mips_get_sr( sr );
  mips_get_cause( cause );

  cause &= (sr & SR_IMASK);
  cause >>= CAUSE_IPSHIFT;

  /* XXX check this and think about it. */

  for ( i=1, mask=0x80 ; i<=8 ; i++, mask >>= 1 ) {
    if ( cause & mask )
      CALL_ISR( MIPS_EXCEPTION_BASE + 8 - i, frame );
  }
}

The line      CALL_ISR( MIPS_EXCEPTION_BASE + 8 - i, frame );
is in error. It should be:

       CALL_ISR( MIPS_INTERRUPT_BASE + 8 - i, frame );


Regards

Ivica







More information about the users mailing list