    // Rowley MSP430 C Compiler
    //
    // Copyright (c) 2001, 2002 Rowley Associates Limited.
    //
    // This file may be distributed under the terms of the License Agreement
    // provided with this software.
    //
    // THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE
    // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

    #ifndef __stdarg_H
    #define __stdarg_H

    // Get definition of __va_list
    #include "__crossworks.h"

    #ifdef __CROSSWORKS

    typedef __va_list va_list;
    __va_list __va_base(int);  // intrinsic

    #define va_start(ap,parmN) \
        ((void)((ap) = __va_base(0)))

    #define va_arg(ap,type) \
        (*(type *)(((ap)=(ap)+sizeof(type))-sizeof(type)))

    #define va_copy(dest,src) \
        ((void)((dest) = (src)))

    #define va_end(ap) \
        ((void)((ap) = (void *)0))

    #else

    typedef __va_list va_list;

    #define va_start(v,l) \
        __builtin_stdarg_start((v),l)

    #define va_arg \
        __builtin_va_arg

    #define va_copy(d,s) \
        __builtin_va_copy((d),(s))

    #define va_end(ap) \
        __builtin_va_end(ap)

    #endif

    #endif