« Return to Thread: problem with REG32() in IXP425

problem with REG32() in IXP425

by sumanth :: Rate this Message:

Reply to Author | View in Thread

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__ */

any pointers in this case are very helpful, and any one who worked on the ixp425 processor can help me by sharing their problem situations and how could they resolve them

Thanks & regards,
Sumanth.

 « Return to Thread: problem with REG32() in IXP425