04ad0a3a47d150ac516eba1f98a57e5eea0395de
[fw/sdcc] / device / include / asm / mcs51 / features.h
1 /** MCS51 specific features.
2  */
3 #ifndef __SDC51_ASM_MCS51_FEATURES_H
4 #define __SDC51_ASM_MCS51_FEATURES_H   1
5
6 #define _REENTRANT      reentrant
7 #define _CODE           code
8
9 /* define _AUTOMEM to indicate the default storage class for
10    automatic variables. To be used with pointers to automatic variables.
11    Cannot be used in reentrant declared functions!
12
13    void foo(void)
14    {
15      char Ar[10];
16      char _AUTOMEM * pAr = Ar;
17    }
18 */
19 #if defined(SDCC_STACK_AUTO)
20   #if defined(SDCC_USE_XSTACK)
21     #define _AUTOMEM pdata
22   #else
23     #define _AUTOMEM idata
24   #endif
25 #elif defined(SDCC_MODEL_SMALL)
26   #define _AUTOMEM data
27 #else
28   #define _AUTOMEM xdata
29 #endif
30
31 /* define _STATMEM to indicate the default storage class for
32    global/static variables. To be used with pointers to static variables.
33
34    char Ar[10];
35    void foo(void)
36    {
37      char _STATMEM * pAr = Ar;
38    }
39 */
40 #if defined(SDCC_MODEL_SMALL)
41   #define _STATMEM data
42 #else
43   #define _STATMEM xdata
44 #endif
45
46 #endif