executor/src/genptocflags_h.tmpl

185 lines
4.3 KiB
Cheetah

/*
* See comment in mkctopflags.cpp
*/
#define M(x) ({ \
x vvv; \
(__builtin_classify_type (vvv) == POINTER_CLASS && \
sizeof(x) != 3 ? \
5UL \
: \
(sizeof(x) <= 4 ? \
flagmap[sizeof(x)] \
: \
4UL \
) \
); \
})
#define POINTER_CLASS 5 /* this is is a gcc specific thing that */
/* may even very from gcc version to version, but works for 2.7 */
#define Point notapoint
#define Cell notacell
#include "rsys/common.h"
#include "rsys/everything.h"
/* for `EXIT_SUCCESS' */
#include <stdlib.h>
#undef Point
#undef Cell
typedef char Point[3];
typedef char Cell[3];
#define void struct {}
#define register
unsigned long flagmap[] =
{
0,
1,
2,
3,
4,
};
#undef P0
#undef P1
#undef P2
#undef P3
#undef P4
#undef P5
#undef P6
#undef P7
#undef P8
#undef P9
#undef P10
#undef P11
#define P11(v, t0, n0, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7, t8, n8, t9, n9, t10, n10, t11, n11) \
printf("#define PTOC_SPECIAL_A11_VALUE\t0x%016llXLL\n" \
"#define PTOC_" #n0 " PTOC_A11_MAGIC\n", \
((long long) M(t11)<< 3) + \
((long long) M(t10)<< 6) + \
((long long) M(t9) << 9) + \
((long long) M(t8) << 12) + \
((long long) M(t7) << 15) + \
((long long) M(t6) << 18) + \
((long long) M(t5) << 21) + \
((long long) M(t4) << 24) + \
((long long) M(t3) << 27) + \
((long long) M(t2) << 30) + \
((long long) M(t1) << 33) + \
((long long) M(t0) << 0));
#define P10(v, t0, n0, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7, t8, n8, t9, n9, t10, n10) \
printf("#define PTOC_SPECIAL_A10_VALUE\t0x%016llXLL\n" \
"#define PTOC_" #n0 " PTOC_A10_MAGIC\n", \
((long long) M(t10)<< 3) + \
((long long) M(t9) << 6) + \
((long long) M(t8) << 9) + \
((long long) M(t7) << 12) + \
((long long) M(t6) << 15) + \
((long long) M(t5) << 18) + \
((long long) M(t4) << 21) + \
((long long) M(t3) << 24) + \
((long long) M(t2) << 27) + \
((long long) M(t1) << 30) + \
((long long) M(t0) << 0));
#define P9(v, t0, n0, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7, t8, n8, t9, n9) \
printf("#define PTOC_" #n0 "\t0x%08lX\n", \
(M(t9) << 3) + \
(M(t8) << 6) + \
(M(t7) << 9) + \
(M(t6) << 12) + \
(M(t5) << 15) + \
(M(t4) << 18) + \
(M(t3) << 21) + \
(M(t2) << 24) + \
(M(t1) << 27) + \
(M(t0) << 0));
#define P8(v, t0, n0, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7, t8, n8) \
printf("#define PTOC_" #n0 "\t0x%08lX\n", \
(M(t8) << 3) + \
(M(t7) << 6) + \
(M(t6) << 9) + \
(M(t5) << 12) + \
(M(t4) << 15) + \
(M(t3) << 18) + \
(M(t2) << 21) + \
(M(t1) << 24) + \
(M(t0) << 0));
#define P7(v, t0, n0, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7) \
printf("#define PTOC_" #n0 "\t0x%08lX\n", \
(M(t7) << 3) + \
(M(t6) << 6) + \
(M(t5) << 9) + \
(M(t4) << 12) + \
(M(t3) << 15) + \
(M(t2) << 18) + \
(M(t1) << 21) + \
(M(t0) << 0));
#define P6(v, t0, n0, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6) \
printf("#define PTOC_" #n0 "\t0x%08lX\n", \
(M(t6) << 3) + \
(M(t5) << 6) + \
(M(t4) << 9) + \
(M(t3) << 12) + \
(M(t2) << 15) + \
(M(t1) << 18) + \
(M(t0) << 0));
#define P5(v, t0, n0, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5) \
printf("#define PTOC_" #n0 "\t0x%08lX\n", \
(M(t5) << 3) + \
(M(t4) << 6) + \
(M(t3) << 9) + \
(M(t2) << 12) + \
(M(t1) << 15) + \
(M(t0) << 0));
#define P4(v, t0, n0, t1, n1, t2, n2, t3, n3, t4, n4) \
printf("#define PTOC_" #n0 "\t0x%08lX\n", \
(M(t4) << 3) + \
(M(t3) << 6) + \
(M(t2) << 9) + \
(M(t1) << 12) + \
(M(t0) << 0));
#define P3(v, t0, n0, t1, n1, t2, n2, t3, n3) \
printf("#define PTOC_" #n0 "\t0x%08lX\n", \
(M(t3) << 3) + \
(M(t2) << 6) + \
(M(t1) << 9) + \
(M(t0) << 0));
#define P2(v, t0, n0, t1, n1, t2, n2) \
printf("#define PTOC_" #n0 "\t0x%08lX\n", \
(M(t2) << 3) + \
(M(t1) << 6) + \
(M(t0) << 0));
#define P1(v, t0, n0, t1, n1) \
printf("#define PTOC_" #n0 "\t0x%08lX\n", \
(M(t1) << 3) + \
(M(t0) << 0));
#define P0(v, t0, n0) \
printf("#define PTOC_" #n0 "\t0x%08lX\n", \
(M(t0) << 0));
int
main ()
{
puts ("#define PTOC_A10_MAGIC 6\n"
"#define PTOC_A11_MAGIC 7");
@fndecls@
return EXIT_SUCCESS;
}