[ECOS] problem with REG32() in ixp425

Andrew Lunn andrew@lunn.ch
Tue Apr 4 11:22:00 GMT 2006


On Tue, Apr 04, 2006 at 04:15:37AM -0700, sumanth wrote:
> 
> Hi,
> 
>              I am sumanth, i am porting ecos to ixp 425 evaluation board of
> mine, but i am getting problem in the hal_interrupt_configure, where we 
> have address calculation routine 
>  *IXP425_GPIT1R = (*IXP425_GPIT1R & ~(7 << shift)) | (ival << shift);
>  *IXP425_GPISR |= (1 << vector);
> 
> where *IXP425_GPIT1R calls REG32 and it calculates the base address and the
> actual bytes from base address which should happen actually,  and call the
> routine
> #define REG32(a,b) ((volatile unsigned int *)((a)+(b)))
> but in our case it is calling the routine
> #define REG32(a,b) (b) 
> so we are only getting the no of bytes move from base, is there any problem
> with definition of _ASSEMBLER_
> I am giving the snap shot of the code
> 
> xscale/cores/current/include/hal_xscale.h
> 
> #ifdef __ASSEMBLER__
> 
> #define REG8(a,b)  (b)
> #define REG16(a,b) (b)
> #define REG32(a,b) (b)
> 
> #else /* __ASSEMBLER__ */
> 
> #define REG8(a,b)  ((volatile unsigned char *)((a)+(b)))
> #define REG16(a,b) ((volatile unsigned short *)((a)+(b)))
> #define REG32(a,b) ((volatile unsigned int *)((a)+(b)))
> 
> extern void hal_xscale_core_init(void);
> #endif /* __ASSEMBLER__ */

hal_interrupt_configure is written in C i presume?

Try using the gcc command line options -E -dD on the file containing
hal_interrupt_configure(). is __ASSEMBLER__ being defined somewhere?

        Andrew

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss



More information about the Ecos-discuss mailing list