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

1.1       root        1: typedef char *va_list;
                      2: 
                      3: #if __GNUCC__ > 1
                      4: 
                      5: #ifdef _STDARG_H
                      6: #define va_start(AP,LASTARG) \
                      7:   (__builtin_saveregs(), (AP) = __builtin_next_arg ())
                      8: #else
                      9: #define va_alist  __builtin_va_alist
                     10: /* The ... causes current_function_varargs to be set in cc1.  */
                     11: #define va_dcl    int __builtin_va_alist; ...
                     12: #define va_start(AP) \
                     13:   ((AP) = (va_list *)&__builtin_va_alist + sizeof(int))
                     14: #endif /* _STDARG_H */
                     15: 
                     16: /* Handle pass by invisible reference and voids left by aligned */
                     17: /* doubles. */
                     18: 
                     19: #define __va_rounded_size(TYPE)  \
                     20:   (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
                     21: 
                     22: #define va_arg(AP,TYPE) \
                     23: ((__va_rounded_size(TYPE) <= 8))                                       \
                     24:   ? ((AP) -= __va_rounded_size (TYPE), (__alignof__ (TYPE) > 4 ?       \
                     25:                                        (int)AP &= ~(0x7) : 0),         \
                     26:      *(TYPE *)(AP))                                                    \
                     27:   : ((AP) -= sizeof (TYPE *), **(TYPE **)(AP))
                     28: 
                     29: void va_end (va_list);         /* Defined in libgcc.a */
                     30: #define va_end(AP)
                     31: 
                     32: #else /* __GNUCC__ > 1 */
                     33: 
                     34: /* __builtin_saveregs () tickles a bug in the pa-risc gcc 1.39 port, */
                     35: /* so don't use it for varargs. Obviously the stdarg stuff doesn't */
                     36: /* work very well. */ 
                     37: 
                     38: #ifdef _STDARG_H
                     39: #define va_start(AP,LASTARG) \
                     40:   (__builtin_saveregs(), (AP) = __builtin_next_arg ())
                     41: 
                     42: /* gcc1 doesn't implement pass by invisible reference */ 
                     43: #define __va_rounded_size(TYPE)  \
                     44:   (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
                     45: 
                     46: #define va_arg(AP,TYPE) \
                     47:   ((AP) -= __va_rounded_size (TYPE), (__alignof__ (TYPE) > 4 ? \
                     48:                                      (int)AP &= ~(0x7) : 0),   \
                     49:    *(TYPE *)(AP))
                     50: 
                     51: void va_end (va_list);         /* Defined in libgcc.a */
                     52: #define va_end(AP)
                     53: #else /* _STDARG_H */
                     54: #define va_alist __va_a__, __va_b__, __va_c__, __va_d__
                     55: #define va_dcl int __va_a__, __va_b__, __va_c__, __va_d__;
                     56: #define va_start(list) list = (char *) &__va_a__, &__va_b__, &__va_c__, \
                     57:   &__va_d__
                     58: 
                     59: # define va_arg(list,mode) *(mode *) ((int) (list = (char *) \
                     60:        (((int) list + sizeof(int /*__va_a__*/) - sizeof(mode)) & ~(sizeof(mode)-1)) \
                     61:        - sizeof(int /*__va_a__*/)) + sizeof(int /*__va_a__*/))
                     62:   
                     63: #define va_end(list)
                     64: 
                     65: #endif /* _STDARG_H */
                     66: #endif /* __GNUCC__ > 1 */

unix.superglobalmegacorp.com

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