I am using an 89C51 variant with both intenal XRAM and EEPROM and as such their address space overlaps from 0x0000 to 0x03FF so I have variables declared as follows:-
#define size 0x20 /* variables to be stored in xdata */ char xdata cArray[size]; int xdata iTimer; /* variables to be stored in EEPROM */ char xdata cEE_Array _at_ 0x00; /* config data copied to/from cArray */ int xdata iEE_Timer _at_ 0x20;