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 Sdcc-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sdcc-user