Hello,
I'm using an 8051-derivative with the 2.9.0 version of SDCC. I am
trying to pass parameters in xdata like this:
void WriteLEDByte( BYTE iOutput, BYTE xdata iData );
void function( void )
{
WriteLEDByte( iOutput, LED_ADDRESS );
...
The mapping is showing the input variable assigned to XSEG:
XSEG 0000 007A = 122. bytes
(REL,CON,XDATA)
Value Global
-------- --------------------------------
...
0D:0036 _WriteLEDByte_PARM_2
...
But when the function is called, its being loaded into a data address:
1712 ;
F340_USB0_Keyboard.c:782: WriteLEDByte( iOutput, LED_ADDRESS );
046C 75*09 72 1713 mov _WriteLEDByte_PARM_2,#0x72
046F 8A 82 1714 mov dpl,r2
0471 C0 02 1715 push ar2
0473 12s04rC9 1716 lcall _WriteLEDByte
And the function is trying to read it from XDATA:
04C9 1808 _WriteLEDByte:
...
04DC 90s00r09 1821 mov dptr,#_WriteLEDByte_PARM_2
04DF E0 1822 movx a,@dptr
04E0 FB 1823 mov r3,a
...
Does anyone know what is happening here?
Thanks,
Will.
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Sdcc-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sdcc-user