112027Sjungma@eit.uni-kl.de#include "copyright.h"
212027Sjungma@eit.uni-kl.de#include "qt.h"
312027Sjungma@eit.uni-kl.de
412027Sjungma@eit.uni-kl.de// static void *qt_sp_bottom_save;
512027Sjungma@eit.uni-kl.de
612027Sjungma@eit.uni-kl.de#ifdef QT_VARGS_DEFAULT
712027Sjungma@eit.uni-kl.de
812027Sjungma@eit.uni-kl.de/* If the stack grows down, `vargs' is a pointer to the lowest
912027Sjungma@eit.uni-kl.de   address in the block of arguments.  If the stack grows up, it is a
1012027Sjungma@eit.uni-kl.de   pointer to the highest address in the block. */
1112027Sjungma@eit.uni-kl.de
1212027Sjungma@eit.uni-kl.de  qt_t *
1312027Sjungma@eit.uni-kl.deqt_vargs (qt_t *sp, int nbytes, void *vargs,
1412027Sjungma@eit.uni-kl.de	  void *pt, qt_startup_t *startup,
1512027Sjungma@eit.uni-kl.de	  qt_vuserf_t *vuserf, qt_cleanup_t *cleanup)
1612027Sjungma@eit.uni-kl.de{
1712027Sjungma@eit.uni-kl.de  int i;
1812027Sjungma@eit.uni-kl.de
1912027Sjungma@eit.uni-kl.de  sp = QT_VARGS_MD0 (sp, nbytes);
2012027Sjungma@eit.uni-kl.de#ifdef QT_GROW_UP
2112027Sjungma@eit.uni-kl.de    for (i=nbytes/sizeof(qt_word_t); i>0; --i) {
2212027Sjungma@eit.uni-kl.de      QT_SPUT (QT_VARGS_ADJUST(sp), i, ((qt_word_t *)vargs)[-i]);
2312027Sjungma@eit.uni-kl.de    }
2412027Sjungma@eit.uni-kl.de#else
2512027Sjungma@eit.uni-kl.de    for (i=nbytes/sizeof(qt_word_t); i>0; --i) {
2612027Sjungma@eit.uni-kl.de      QT_SPUT (QT_VARGS_ADJUST(sp), i-1, ((qt_word_t *)vargs)[i-1]);
2712027Sjungma@eit.uni-kl.de    }
2812027Sjungma@eit.uni-kl.de#endif
2912027Sjungma@eit.uni-kl.de
3012027Sjungma@eit.uni-kl.de  QT_VARGS_MD1 (QT_VADJ(sp));
3112027Sjungma@eit.uni-kl.de  QT_SPUT (QT_VADJ(sp), QT_VARGT_INDEX, pt);
3212027Sjungma@eit.uni-kl.de  QT_SPUT (QT_VADJ(sp), QT_VSTARTUP_INDEX, startup);
3312027Sjungma@eit.uni-kl.de  QT_SPUT (QT_VADJ(sp), QT_VUSERF_INDEX, vuserf);
3412027Sjungma@eit.uni-kl.de  QT_SPUT (QT_VADJ(sp), QT_VCLEANUP_INDEX, cleanup);
3512027Sjungma@eit.uni-kl.de  return ((qt_t *)QT_VADJ(sp));
3612027Sjungma@eit.uni-kl.de}
3712027Sjungma@eit.uni-kl.de#endif /* def QT_VARGS_DEFAULT */
3812027Sjungma@eit.uni-kl.de
3912027Sjungma@eit.uni-kl.de#ifdef __cplusplus
4012027Sjungma@eit.uni-kl.deextern "C"
4112027Sjungma@eit.uni-kl.de#endif
4212027Sjungma@eit.uni-kl.de  void
4312027Sjungma@eit.uni-kl.deqt_null (void)
4412027Sjungma@eit.uni-kl.de{
4512027Sjungma@eit.uni-kl.de}
4612027Sjungma@eit.uni-kl.de
4712027Sjungma@eit.uni-kl.de#ifdef __cplusplus
4812027Sjungma@eit.uni-kl.deextern "C"
4912027Sjungma@eit.uni-kl.de#endif
5012027Sjungma@eit.uni-kl.de  void
5112027Sjungma@eit.uni-kl.deqt_error (void)
5212027Sjungma@eit.uni-kl.de{
5312027Sjungma@eit.uni-kl.de  extern void abort(void);
5412027Sjungma@eit.uni-kl.de
5512027Sjungma@eit.uni-kl.de  abort();
5612027Sjungma@eit.uni-kl.de}
57