Annotation of gcc/va-spur.h, revision 1.1.1.1

1.1       root        1: /*  varargs.h for SPUR */
                      2: 
                      3: /* NB.  This is NOT the definition needed for the new ANSI proposed
                      4:    standard */
                      5:  
                      6: 
                      7: struct va_struct { char regs[20]; };
                      8: 
                      9: #define va_alist va_regs, va_stack
                     10: 
                     11: #define va_dcl struct va_struct va_regs; int va_stack;
                     12: 
                     13: typedef int va_list;
                     14: 
                     15: #define va_start(pvar) ((pvar) = 0)
                     16: 
                     17: #define va_arg(pvar,type)  \
                     18:     ({  type va_result; \
                     19:         if ((pvar) >= 20) { \
                     20:            va_result = *( (type *) (&va_stack + ((pvar) - 20)/4)); \
                     21:           (pvar) += (sizeof(type) + 7) & ~7; \
                     22:        } \
                     23:        else if ((pvar) + sizeof(type) > 20) { \
                     24:           va_result = * (type *) &va_stack; \
                     25:           (pvar) = 20 + ( (sizeof(type) + 7) & ~7); \
                     26:        } \
                     27:        else if (sizeof(type) == 8) { \
                     28:           union {double d; int i[2];} u; \
                     29:           u.i[0] = *(int *) (va_regs.regs + (pvar)); \
                     30:           u.i[1] = *(int *) (va_regs.regs + (pvar) + 4); \
                     31:           va_result = * (type *) &u; \
                     32:           (pvar) += (sizeof(type) + 3) & ~3; \
                     33:        } \
                     34:        else { \
                     35:           va_result = * (type *) (va_regs.regs + (pvar)); \
                     36:           (pvar) += (sizeof(type) + 3) & ~3; \
                     37:        } \
                     38:        va_result; })

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.