diff options
author | Matthias Jung <jungma@eit.uni-kl.de> | 2017-03-01 18:39:56 +0100 |
---|---|---|
committer | Matthias Jung <jungma@eit.uni-kl.de> | 2017-05-18 08:36:56 +0000 |
commit | aa651c7f8321bf96fc88f9a17285225000a753ec (patch) | |
tree | b13240008c970b47bd74a5007e68136155d272fc /ext/systemc/src/sysc/qt/qt.c | |
parent | 595e692de09e1b7cbc5f57ac01da299afc066fdd (diff) | |
download | gem5-aa651c7f8321bf96fc88f9a17285225000a753ec.tar.xz |
ext: Include SystemC 2.3.1 into gem5
In the past it happened several times that some changes in gem5 broke the
SystemC coupling. Recently Accelera has changed the licence for SystemC
from their own licence to Apache2.0, which is compatible with gem5.
However, SystemC usually relies on the Boost library, but I was able to
exchange the boost calls by c++11 alternatives. The recent SystemC version
is placed into /ext and is integrated into gem5's build system. The goal is
to integrate some SystemC tests for the CI in some following patches.
Change-Id: I4b66ec806b5e3cffc1d7c85d3735ff4fa5b31fd0
Reviewed-on: https://gem5-review.googlesource.com/2240
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'ext/systemc/src/sysc/qt/qt.c')
-rw-r--r-- | ext/systemc/src/sysc/qt/qt.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/ext/systemc/src/sysc/qt/qt.c b/ext/systemc/src/sysc/qt/qt.c new file mode 100644 index 000000000..204d38397 --- /dev/null +++ b/ext/systemc/src/sysc/qt/qt.c @@ -0,0 +1,56 @@ +#include "copyright.h" +#include "qt.h" + +// static void *qt_sp_bottom_save; + +#ifdef QT_VARGS_DEFAULT + +/* If the stack grows down, `vargs' is a pointer to the lowest + address in the block of arguments. If the stack grows up, it is a + pointer to the highest address in the block. */ + + qt_t * +qt_vargs (qt_t *sp, int nbytes, void *vargs, + void *pt, qt_startup_t *startup, + qt_vuserf_t *vuserf, qt_cleanup_t *cleanup) +{ + int i; + + sp = QT_VARGS_MD0 (sp, nbytes); +#ifdef QT_GROW_UP + for (i=nbytes/sizeof(qt_word_t); i>0; --i) { + QT_SPUT (QT_VARGS_ADJUST(sp), i, ((qt_word_t *)vargs)[-i]); + } +#else + for (i=nbytes/sizeof(qt_word_t); i>0; --i) { + QT_SPUT (QT_VARGS_ADJUST(sp), i-1, ((qt_word_t *)vargs)[i-1]); + } +#endif + + QT_VARGS_MD1 (QT_VADJ(sp)); + QT_SPUT (QT_VADJ(sp), QT_VARGT_INDEX, pt); + QT_SPUT (QT_VADJ(sp), QT_VSTARTUP_INDEX, startup); + QT_SPUT (QT_VADJ(sp), QT_VUSERF_INDEX, vuserf); + QT_SPUT (QT_VADJ(sp), QT_VCLEANUP_INDEX, cleanup); + return ((qt_t *)QT_VADJ(sp)); +} +#endif /* def QT_VARGS_DEFAULT */ + +#ifdef __cplusplus +extern "C" +#endif + void +qt_null (void) +{ +} + +#ifdef __cplusplus +extern "C" +#endif + void +qt_error (void) +{ + extern void abort(void); + + abort(); +} |