开发者

gcc cross assembler problem

I have bulit gcc cross compiler with 'powerpc-eabi' as TARGET in windows using cygwin.

When assembling the follwing code lis r4, %hi(IMMR_OFFSET), I was getting the following

errors.

init/code/sfiles/init_core.s:141: Error: bad expression

init/code/sfiles/init_core.s:141: Error: syntax error; found `h', expected `,'

init/code/sfiles/init_core.s:141: Error: junk at end of line: `hi(IMMR_OFFSET)'

I would like to know why the above errors appear for every lis instruction similar to above.

Please help in this direction.

The value of IMMR_OFFSET is defined in another .h file as below....

.equ IMMR_OFFSET, 0xF0010000

I am using the follwing command for assembly....

c:/cygwin/home/cdot/powerpc/bin/powerpc-eabi-as -mbig-endian开发者_高级运维 -g --defsym _NDI_=1

 --defsym _DBGR_ON_=1 --defsym DEBUG=1 --defsym _PARAM_DEBUG_=1 --defsym _NIU_=1

 -gdwarf-2 -I init/code/hfiles -o init/build/niu_ndi_dbgr_init_core.o init/code/
sfiles/init_core.s 2>init/build/niu_ndi_dbgr_init_core.err


I have a feeling that your assembly source is expecting to be built with a different assembler...

Some PPC assemblers do support the %hi(foo) syntax, but not the GNU assembler (unless there is some poorly documented option that I'm not aware of).

It also won't recognise r4 as a register name unless you use the -mregnames flag.

The equivalent in the GNU assembler syntax is

lis 4, IMMR_OFFSET@h

(or lis r4, IMMR_OFFSET@h will also work if you use -mregnames).

Similarly, %lo(foo) and %ha(foo) would need to be written as foo@l and foo@ha respectively.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜