/* * 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 #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; }