1 #include <stdio.h> 2 3 static unsigned long test[] ={ 4 0x000000000000000a, 5 0x000000000000001a, 6 0x000000000000012a, 7 0x000000000000123a, 8 0x000000000001234a, 9 0x000000000012345a, 10 0x000000000123456a, 11 0x000000001234567a, 12 0x000000012345678a, 13 0x000000123456789a, 14 0x000001234567890a, 15 0x000000000000000b, 16 0x000000000000001b, 17 0x000000000000012b, 18 0x000000000000123b, 19 0x000000000001234b, 20 0x000000000012345b, 21 0x000000000123456b, 22 0x000000001234567b, 23 0x000000012345678b, 24 0x000000123456789b, 25 0x000001234567890b, 26 0x000000000000000c, 27 0x000000000000001c, 28 0x000000000000012c, 29 0x000000000000123c, 30 0x000000000001234c, 31 0x000000000012345c, 32 0x000000000123456c, 33 0x000000001234567c, 34 0x000000012345678c, 35 0x000000123456789c, 36 0x000001234567890c, 37 0x000000000000000d, 38 0x000000000000001d, 39 0x000000000000012d, 40 0x000000000000123d, 41 0x000000000001234d, 42 0x000000000012345d, 43 0x000000000123456d, 44 0x000000001234567d, 45 0x000000012345678d, 46 0x000000123456789d, 47 0x000001234567890d, 48 0x000000000000000e, 49 0x000000000000001e, 50 0x000000000000012e, 51 0x000000000000123e, 52 0x000000000001234e, 53 0x000000000012345e, 54 0x000000000123456e, 55 0x000000001234567e, 56 0x000000012345678e, 57 0x000000123456789e, 58 0x000001234567890e, 59 0x000000000000000f, 60 0x000000000000001f, 61 0x000000000000012f, 62 0x000000000000123f, 63 0x000000000001234f, 64 0x000000000012345f, 65 0x000000000123456f, 66 0x000000001234567f, 67 0x000000012345678f, 68 0x000000123456789f, 69 0x000001234567890f, 70 /* min and max */ 71 0x000002147483647c, 72 0x000002147483648d, 73 74 /* fixs390: we also need to check if invalid values cause a fixed-point-devide exception. 75 Not yet implemented. */ 76 /* 0x000002147483648c, 77 0x000002147483649d, 78 0x00000000000000fa, */ 79 80 }; 81 82 83 static signed int dec_to_hex(unsigned long *addr) 84 { 85 register signed int res asm("2") = 0; 86 register unsigned long *_addr asm("4") = addr; 87 88 asm volatile( 89 " cvb %0,0(0,%1)" 90 : "=d" (res) : "d" (_addr) : "memory"); 91 return res & 0xffffffff; 92 } 93 94 95 96 97 int main() 98 { 99 int i; 100 101 for (i = 0; i < sizeof(test) / sizeof(test[0]); i++) 102 printf("%d\n", dec_to_hex(&test[i])); 103 return 0; 104 } 105