mirror of
https://github.com/ctm/executor.git
synced 2025-02-18 12:30:30 +00:00
185 lines
4.3 KiB
Cheetah
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;
|
|
}
|