1 #include <stdio.h> 2 #define get_cc() \ 3 ({ \ 4 char __cc; \ 5 /* dont use IPM to better test spechelpers */ \ 6 asm volatile( " brc 8,1f\n\t" \ 7 " brc 4,2f\n\t" \ 8 " brc 2,3f\n\t" \ 9 " brc 1,4f\n\t" \ 10 " mvi %0,4\n\t" \ 11 " j 0f\n\t" \ 12 "1: mvi %0,0\n\t" \ 13 " j 0f\n\t" \ 14 "2: mvi %0,1\n\t" \ 15 " j 0f\n\t" \ 16 "3: mvi %0,2\n\t" \ 17 " j 0f\n\t" \ 18 "4: mvi %0,3\n\t" \ 19 " j 0f\n\t" \ 20 "0: bcr 0,0 /*nop*/\n\t" \ 21 :"=m" (__cc)::"memory"); \ 22 __cc; \ 23 }) 24 25 static inline void dump_field(void *field, int size) 26 { 27 int i; 28 for (i=0; i < size; i++) 29 printf("%2.2X ", ((char *) field)[i]); 30 } 31