Index: uspace/app/pcc/cc/ccom/Makefile
===================================================================
--- uspace/app/pcc/cc/ccom/Makefile	(revision 3e01316fd558e3235487a9cfe2a4fe29615ff69a)
+++ uspace/app/pcc/cc/ccom/Makefile	(revision 0cf27ee8c50ec7e07748f2e04672e911b9e30b77)
@@ -33,4 +33,5 @@
 EXTRA_CFLAGS = -I$(MIPDIR) -I$(MDIR) -I$(OSDIR) -I. -w
 DEFS = -Dmach_$(PLATFORM) -D__helenos__ -DPCC_DEBUG -DGCC_COMPAT -Dfree=free
+LIBS = $(LIBSOFTFLOAT_PREFIX)/libsoftfloat.a
 BINARY = ccom
 
Index: uspace/app/pcc/cc/ccom/arch/amd64/external.c
===================================================================
--- uspace/app/pcc/cc/ccom/arch/amd64/external.c	(revision 3e01316fd558e3235487a9cfe2a4fe29615ff69a)
+++ uspace/app/pcc/cc/ccom/arch/amd64/external.c	(revision 0cf27ee8c50ec7e07748f2e04672e911b9e30b77)
@@ -1,65 +1,62 @@
 #include "pass2.h"
-
-// TODO: replace with file generated by ccom_mkext
-
 static int op0[] = { -1 };
 static int op1[] = { -1 };
-static int op2[] = { -1 };
+static int op2[] = { 193, 194, 195, 196, 197, 198, 199, 200, 201, 218, 220, -1 };
 static int op3[] = { -1 };
-static int op4[] = { -1 };
-static int op5[] = { -1 };
-static int op6[] = { -1 };
-static int op7[] = { -1 };
-static int op8[] = { -1 };
-static int op9[] = { -1 };
-static int op10[] = { -1 };
-static int op11[] = { -1 };
-static int op12[] = { -1 };
-static int op13[] = { -1 };
-static int op14[] = { -1 };
-static int op15[] = { -1 };
-static int op16[] = { -1 };
-static int op17[] = { -1 };
-static int op18[] = { -1 };
-static int op19[] = { -1 };
-static int op20[] = { -1 };
+static int op4[] = { 193, 194, 195, 196, 197, 198, 199, 200, 201, 218, 220, -1 };
+static int op5[] = { 193, 194, 195, 196, 197, 198, 199, 200, 201, 218, 220, -1 };
+static int op6[] = { 193, 194, 195, 196, 197, 198, 199, 200, 201, 218, 220, -1 };
+static int op7[] = { 193, 194, 195, 196, 197, 198, 199, 200, 201, 218, 220, -1 };
+static int op8[] = { 193, 194, 195, 196, 197, 198, 199, 200, 201, 218, 220, -1 };
+static int op9[] = { 219, 220, -1 };
+static int op10[] = { 70, 71, 72, 73, 74, 75, 76, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 220, -1 };
+static int op11[] = { 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 220, -1 };
+static int op12[] = { 146, 147, 148, 149, 150, 151, 152, 153, 220, -1 };
+static int op13[] = { 154, 155, 156, 157, 158, 159, 220, -1 };
+static int op14[] = { 160, 161, 162, 163, 164, 165, 220, -1 };
+static int op15[] = { 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 182, 183, 184, 185, 186, 187, 188, 189, 190, 220, -1 };
+static int op16[] = { 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 220, -1 };
+static int op17[] = { 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 220, -1 };
+static int op18[] = { 95, 96, 97, 98, 99, 100, 101, 102, 220, -1 };
+static int op19[] = { 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 220, -1 };
+static int op20[] = { 208, 209, 210, 211, 219, 220, -1 };
 static int op21[] = { -1 };
 static int op22[] = { -1 };
-static int op23[] = { -1 };
-static int op24[] = { -1 };
-static int op25[] = { -1 };
-static int op26[] = { -1 };
-static int op27[] = { -1 };
-static int op28[] = { -1 };
-static int op29[] = { -1 };
-static int op30[] = { -1 };
-static int op31[] = { -1 };
-static int op32[] = { -1 };
-static int op33[] = { -1 };
-static int op34[] = { -1 };
-static int op35[] = { -1 };
-static int op36[] = { -1 };
-static int op37[] = { -1 };
-static int op38[] = { -1 };
-static int op39[] = { -1 };
-static int op40[] = { -1 };
-static int op41[] = { -1 };
-static int op42[] = { -1 };
-static int op43[] = { -1 };
-static int op44[] = { -1 };
-static int op45[] = { -1 };
-static int op46[] = { -1 };
-static int op47[] = { -1 };
-static int op48[] = { -1 };
-static int op49[] = { -1 };
-static int op50[] = { -1 };
-static int op51[] = { -1 };
-static int op52[] = { -1 };
-static int op53[] = { -1 };
-static int op54[] = { -1 };
+static int op23[] = { 166, 167, 168, 169, 170, 171, 214, 219, 220, -1 };
+static int op24[] = { 202, 203, 204, 205, 206, 207, 219, 220, -1 };
+static int op25[] = { 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 220, -1 };
+static int op26[] = { 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 220, -1 };
+static int op27[] = { 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 220, -1 };
+static int op28[] = { 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 220, -1 };
+static int op29[] = { 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 220, -1 };
+static int op30[] = { 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 220, -1 };
+static int op31[] = { 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 220, -1 };
+static int op32[] = { 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 220, -1 };
+static int op33[] = { 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 220, -1 };
+static int op34[] = { 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 220, -1 };
+static int op35[] = { 220, -1 };
+static int op36[] = { 217, 219, 220, -1 };
+static int op37[] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 219, 220, -1 };
+static int op38[] = { 1, 2, 219, 220, -1 };
+static int op39[] = { 220, -1 };
+static int op40[] = { 220, -1 };
+static int op41[] = { 48, 50, 52, 54, 56, 58, 60, 62, 220, -1 };
+static int op42[] = { 49, 51, 53, 55, 57, 59, 61, 63, 219, 220, -1 };
+static int op43[] = { 220, -1 };
+static int op44[] = { 219, 220, -1 };
+static int op45[] = { 67, 68, 69, 220, -1 };
+static int op46[] = { 64, 65, 66, 219, 220, -1 };
+static int op47[] = { 218, 220, -1 };
+static int op48[] = { 220, -1 };
+static int op49[] = { 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 215, -1 };
+static int op50[] = { 145, 216, -1 };
+static int op51[] = { 212, 219, 220, -1 };
+static int op52[] = { 219, 220, -1 };
+static int op53[] = { 220, -1 };
+static int op54[] = { 191, 192, 219, 220, -1 };
 static int op55[] = { -1 };
-static int op56[] = { -1 };
-static int op57[] = { -1 };
-static int op58[] = { -1 };
+static int op56[] = { 220, -1 };
+static int op57[] = { 219, 220, -1 };
+static int op58[] = { 213, 219, 220, -1 };
 
 int *qtable[] = { 
@@ -124,49 +121,50 @@
 	op58,
 };
-int tempregs[] = { -1 };
-int permregs[] = { -1 };
+int tempregs[] = { 0, 1, 2, 4, 5, 8, 9, 10, 11, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, -1 };
+int permregs[] = { 3, 12, 13, 14, 15, -1 };
 bittype validregs[] = {
-	0x7fffffffff,
+	0xffffffff3f,
 };
 static int amap[MAXREGS][NUMCLASS] = {
-	/* 0 */{ 0x0,0x0,0x0,0x0 },
-	/* 1 */{ 0x0,0x0,0x0,0x0 },
-	/* 2 */{ 0x0,0x0,0x0,0x0 },
-	/* 3 */{ 0x0,0x0,0x0,0x0 },
-	/* 4 */{ 0x0,0x0,0x0,0x0 },
-	/* 5 */{ 0x0,0x0,0x0,0x0 },
-	/* 6 */{ 0x0,0x0,0x0,0x0 },
-	/* 7 */{ 0x0,0x0,0x0,0x0 },
-	/* 8 */{ 0x0,0x0,0x0,0x0 },
-	/* 9 */{ 0x0,0x0,0x0,0x0 },
-	/* 10 */{ 0x0,0x0,0x0,0x0 },
-	/* 11 */{ 0x0,0x0,0x0,0x0 },
-	/* 12 */{ 0x0,0x0,0x0,0x0 },
-	/* 13 */{ 0x0,0x0,0x0,0x0 },
-	/* 14 */{ 0x0,0x0,0x0,0x0 },
-	/* 15 */{ 0x0,0x0,0x0,0x0 },
-	/* 16 */{ 0x0,0x0,0x0,0x0 },
-	/* 17 */{ 0x0,0x0,0x0,0x0 },
-	/* 18 */{ 0x0,0x0,0x0,0x0 },
-	/* 19 */{ 0x0,0x0,0x0,0x0 },
-	/* 20 */{ 0x0,0x0,0x0,0x0 },
-	/* 21 */{ 0x0,0x0,0x0,0x0 },
-	/* 22 */{ 0x0,0x0,0x0,0x0 },
-	/* 23 */{ 0x0,0x0,0x0,0x0 },
-	/* 24 */{ 0x0,0x0,0x0,0x0 },
-	/* 25 */{ 0x0,0x0,0x0,0x0 },
-	/* 26 */{ 0x0,0x0,0x0,0x0 },
-	/* 27 */{ 0x0,0x0,0x0,0x0 },
-	/* 28 */{ 0x0,0x0,0x0,0x0 },
-	/* 29 */{ 0x0,0x0,0x0,0x0 },
-	/* 30 */{ 0x0,0x0,0x0,0x0 },
-	/* 31 */{ 0x0,0x0,0x0,0x0 },
-	/* 32 */{ 0x0,0x0,0x0,0x0 },
-	/* 33 */{ 0x0,0x0,0x0,0x0 },
-	/* 34 */{ 0x0,0x0,0x0,0x0 },
-	/* 35 */{ 0x0,0x0,0x0,0x0 },
-	/* 36 */{ 0x0,0x0,0x0,0x0 },
-	/* 37 */{ 0x0,0x0,0x0,0x0 },
-	/* 38 */{ 0x0,0x0,0x0,0x0 }
+	/* 0 */{ 0x1,0x0,0x0 },
+	/* 1 */{ 0x2,0x0,0x0 },
+	/* 2 */{ 0x4,0x0,0x0 },
+	/* 3 */{ 0x8,0x0,0x0 },
+	/* 4 */{ 0x10,0x0,0x0 },
+	/* 5 */{ 0x20,0x0,0x0 },
+	/* 6 */{ 0x0,0x0,0x0 },
+	/* 7 */{ 0x0,0x0,0x0 },
+	/* 8 */{ 0x40,0x0,0x0 },
+	/* 9 */{ 0x80,0x0,0x0 },
+	/* 10 */{ 0x100,0x0,0x0 },
+	/* 11 */{ 0x200,0x0,0x0 },
+	/* 12 */{ 0x400,0x0,0x0 },
+	/* 13 */{ 0x800,0x0,0x0 },
+	/* 14 */{ 0x1000,0x0,0x0 },
+	/* 15 */{ 0x2000,0x0,0x0 },
+	/* 16 */{ 0x0,0x1,0x0 },
+	/* 17 */{ 0x0,0x2,0x0 },
+	/* 18 */{ 0x0,0x4,0x0 },
+	/* 19 */{ 0x0,0x8,0x0 },
+	/* 20 */{ 0x0,0x10,0x0 },
+	/* 21 */{ 0x0,0x20,0x0 },
+	/* 22 */{ 0x0,0x40,0x0 },
+	/* 23 */{ 0x0,0x80,0x0 },
+	/* 24 */{ 0x0,0x100,0x0 },
+	/* 25 */{ 0x0,0x200,0x0 },
+	/* 26 */{ 0x0,0x400,0x0 },
+	/* 27 */{ 0x0,0x800,0x0 },
+	/* 28 */{ 0x0,0x1000,0x0 },
+	/* 29 */{ 0x0,0x2000,0x0 },
+	/* 30 */{ 0x0,0x4000,0x0 },
+	/* 31 */{ 0x0,0x8000,0x0 },
+	/* 32 */{ 0x0,0x0,0x1 },
+	/* 33 */{ 0x0,0x0,0x2 },
+	/* 34 */{ 0x0,0x0,0x4 },
+	/* 35 */{ 0x0,0x0,0x8 },
+	/* 36 */{ 0x0,0x0,0x10 },
+	/* 37 */{ 0x0,0x0,0x20 },
+	/* 38 */{ 0x0,0x0,0x40 },
+	/* 39 */{ 0x0,0x0,0x80 },
 };
 int
@@ -175,9 +173,8 @@
 	return amap[regnum][class-1];
 }
-static int rmap[NUMCLASS][15] = {
-	{ 0, 1, 2, 3, 4, 5, },
-	{ 8, 9, 10, 11, 12, 13, 14, 15, },
-	{ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, },
-	{ 31, 32, 33, 34, 35, 36, 37, 38, },
+static int rmap[NUMCLASS][16] = {
+	{ 0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 14, 15, },
+	{ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, },
+	{ 32, 33, 34, 35, 36, 37, 38, 39, },
 };
 
@@ -187,11 +184,11 @@
 	return rmap[class-1][color];
 }
-int regK[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
+int regK[] = { 0, 14, 16, 8, 0, 0, 0, 0 };
 int
 classmask(int class)
 {
-	if(class == CLASSA) return 0x0;
-	if(class == CLASSB) return 0x0;
-	if(class == CLASSC) return 0x0;
+	if(class == CLASSA) return 0x3fff;
+	if(class == CLASSB) return 0xffff;
+	if(class == CLASSC) return 0xff;
 	if(class == CLASSD) return 0x0;
 	if(class == CLASSE) return 0x0;
@@ -200,35 +197,35 @@
 }
 static bittype ovlarr[MAXREGS][1] = {
-{ 0x1f0301,  },
-{ 0x1e10c02,  },
-{ 0xe223004,  },
-{ 0x3244c008,  },
-{ 0x54880010,  },
-{ 0x69100020,  },
+{ 0x1,  },
+{ 0x2,  },
+{ 0x4,  },
+{ 0x8,  },
+{ 0x10,  },
+{ 0x20,  },
 { 0x40,  },
 { 0x80,  },
-{ 0x1f0101,  },
-{ 0x1f0201,  },
-{ 0x1e10402,  },
-{ 0x1e10802,  },
-{ 0xe221004,  },
-{ 0xe222004,  },
-{ 0x32444008,  },
-{ 0x32448008,  },
-{ 0x1ff0f03,  },
-{ 0xe3f3305,  },
-{ 0x325fc309,  },
-{ 0x549f0311,  },
-{ 0x691f0321,  },
-{ 0xfe33c06,  },
-{ 0x33e5cc0a,  },
-{ 0x55e90c12,  },
-{ 0x69f10c22,  },
-{ 0x3e66f00c,  },
-{ 0x5eaa3014,  },
-{ 0x6f323024,  },
-{ 0x76ccc018,  },
-{ 0x7b54c028,  },
-{ 0x7d980030,  },
+{ 0x100,  },
+{ 0x200,  },
+{ 0x400,  },
+{ 0x800,  },
+{ 0x1000,  },
+{ 0x2000,  },
+{ 0x4000,  },
+{ 0x8000,  },
+{ 0x10000,  },
+{ 0x20000,  },
+{ 0x40000,  },
+{ 0x80000,  },
+{ 0x100000,  },
+{ 0x200000,  },
+{ 0x400000,  },
+{ 0x800000,  },
+{ 0x1000000,  },
+{ 0x2000000,  },
+{ 0x4000000,  },
+{ 0x8000000,  },
+{ 0x10000000,  },
+{ 0x20000000,  },
+{ 0x40000000,  },
 { 0x80000000,  },
 { 0x1,  },
@@ -239,4 +236,5 @@
 { 0x20,  },
 { 0x40,  },
+{ 0x80,  },
 };
 int
Index: uspace/app/pcc/cc/ccom/arch/amd64/external.h
===================================================================
--- uspace/app/pcc/cc/ccom/arch/amd64/external.h	(revision 3e01316fd558e3235487a9cfe2a4fe29615ff69a)
+++ uspace/app/pcc/cc/ccom/arch/amd64/external.h	(revision 0cf27ee8c50ec7e07748f2e04672e911b9e30b77)
@@ -1,21 +1,29 @@
-// TODO: replace with file generated by ccom_mkext
-
 #ifndef _EXTERNAL_H_
 #define _EXTERNAL_H_
-#define MAXOPLEN 0
-#define NUMBITS 32
+#define NEED_SMULLL
+#define NEED_SDIVLL
+#define NEED_SMODLL
+#define NEED_SPLUSLL
+#define NEED_SMINUSLL
+#define NEED_UMULLL
+#define NEED_UDIVLL
+#define NEED_UMODLL
+#define NEED_UPLUSLL
+#define NEED_UMINUSLL
+#define MAXOPLEN 48
+#define NUMBITS 64
 #define BIT2BYTE(bits) ((((bits)+NUMBITS-1)/NUMBITS)*(NUMBITS/8))
-#define BITSET(arr, bit) (arr[bit/NUMBITS] |= ((int)1 << (bit & (NUMBITS-1))))
-#define BITCLEAR(arr, bit) (arr[bit/NUMBITS] &= ~((int)1 << (bit & (NUMBITS-1))))
-#define TESTBIT(arr, bit) (arr[bit/NUMBITS] & ((int)1 << (bit & (NUMBITS-1))))
-typedef int bittype;
+#define BITSET(arr, bit) (arr[bit/NUMBITS] |= ((long)1 << (bit & (NUMBITS-1))))
+#define BITCLEAR(arr, bit) (arr[bit/NUMBITS] &= ~((long)1 << (bit & (NUMBITS-1))))
+#define TESTBIT(arr, bit) (arr[bit/NUMBITS] & ((long)1 << (bit & (NUMBITS-1))))
+typedef long bittype;
 extern int tempregs[], permregs[];
-#define NTEMPREG 0
-#define FREGS 0
-#define NPERMREG 0
+#define NTEMPREG 26
+#define FREGS 25
+#define NPERMREG 6
 extern bittype validregs[];
-#define AREGCNT 0
-#define BREGCNT 0
-#define CREGCNT 0
+#define AREGCNT 14
+#define BREGCNT 16
+#define CREGCNT 8
 #define DREGCNT 0
 #define EREGCNT 0
Index: uspace/app/pcc/cc/ccom/arch/ia32/external.c
===================================================================
--- uspace/app/pcc/cc/ccom/arch/ia32/external.c	(revision 3e01316fd558e3235487a9cfe2a4fe29615ff69a)
+++ uspace/app/pcc/cc/ccom/arch/ia32/external.c	(revision 0cf27ee8c50ec7e07748f2e04672e911b9e30b77)
@@ -2,61 +2,61 @@
 static int op0[] = { -1 };
 static int op1[] = { -1 };
-static int op2[] = { 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 231, 233, -1 };
+static int op2[] = { 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 232, 234, -1 };
 static int op3[] = { -1 };
-static int op4[] = { 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 231, 233, -1 };
-static int op5[] = { 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 231, 233, -1 };
-static int op6[] = { 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 231, 233, -1 };
-static int op7[] = { 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 231, 233, -1 };
-static int op8[] = { 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 231, 233, -1 };
-static int op9[] = { 232, 233, -1 };
-static int op10[] = { 68, 69, 70, 71, 72, 73, 74, 75, 76, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 233, -1 };
-static int op11[] = { 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 233, -1 };
-static int op12[] = { 151, 152, 153, 154, 155, 156, 157, 233, -1 };
-static int op13[] = { 158, 159, 160, 161, 162, 233, -1 };
-static int op14[] = { 163, 164, 165, 166, 167, 168, 233, -1 };
-static int op15[] = { 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 183, 184, 185, 186, 187, 188, 189, 233, -1 };
-static int op16[] = { 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 233, -1 };
-static int op17[] = { 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 233, -1 };
-static int op18[] = { 97, 98, 99, 100, 101, 102, 103, 233, -1 };
-static int op19[] = { 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 233, -1 };
-static int op20[] = { 210, 211, 212, 213, 232, 233, -1 };
+static int op4[] = { 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 232, 234, -1 };
+static int op5[] = { 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 232, 234, -1 };
+static int op6[] = { 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 232, 234, -1 };
+static int op7[] = { 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 232, 234, -1 };
+static int op8[] = { 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 232, 234, -1 };
+static int op9[] = { 233, 234, -1 };
+static int op10[] = { 68, 69, 70, 71, 72, 73, 74, 75, 76, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 234, -1 };
+static int op11[] = { 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 234, -1 };
+static int op12[] = { 151, 152, 153, 154, 155, 156, 157, 234, -1 };
+static int op13[] = { 158, 159, 160, 161, 162, 234, -1 };
+static int op14[] = { 163, 164, 165, 166, 167, 168, 234, -1 };
+static int op15[] = { 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 183, 184, 185, 186, 187, 188, 189, 234, -1 };
+static int op16[] = { 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 234, -1 };
+static int op17[] = { 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 234, -1 };
+static int op18[] = { 97, 98, 99, 100, 101, 102, 103, 234, -1 };
+static int op19[] = { 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 234, -1 };
+static int op20[] = { 211, 212, 213, 214, 233, 234, -1 };
 static int op21[] = { -1 };
 static int op22[] = { -1 };
-static int op23[] = { 169, 170, 171, 172, 173, 174, 175, 227, 232, 233, -1 };
-static int op24[] = { 205, 206, 207, 208, 209, 232, 233, -1 };
-static int op25[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 };
-static int op26[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 };
-static int op27[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 };
-static int op28[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 };
-static int op29[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 };
-static int op30[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 };
-static int op31[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 };
-static int op32[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 };
-static int op33[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 };
-static int op34[] = { 176, 177, 178, 179, 180, 181, 182, 233, -1 };
-static int op35[] = { 233, -1 };
-static int op36[] = { 230, 232, 233, -1 };
-static int op37[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 232, 233, -1 };
-static int op38[] = { 1, 232, 233, -1 };
-static int op39[] = { 233, -1 };
-static int op40[] = { 233, -1 };
-static int op41[] = { 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 233, -1 };
-static int op42[] = { 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 232, 233, -1 };
-static int op43[] = { 233, -1 };
-static int op44[] = { 232, 233, -1 };
-static int op45[] = { 65, 66, 67, 233, -1 };
-static int op46[] = { 62, 63, 64, 232, 233, -1 };
-static int op47[] = { 231, 233, -1 };
-static int op48[] = { 233, -1 };
-static int op49[] = { 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 228, -1 };
-static int op50[] = { 150, 229, -1 };
-static int op51[] = { 226, 232, 233, -1 };
-static int op52[] = { 232, 233, -1 };
-static int op53[] = { 233, -1 };
-static int op54[] = { 190, 232, 233, -1 };
+static int op23[] = { 169, 170, 171, 172, 173, 174, 175, 228, 233, 234, -1 };
+static int op24[] = { 206, 207, 208, 209, 210, 233, 234, -1 };
+static int op25[] = { 176, 177, 178, 179, 180, 181, 182, 234, -1 };
+static int op26[] = { 176, 177, 178, 179, 180, 181, 182, 234, -1 };
+static int op27[] = { 176, 177, 178, 179, 180, 181, 182, 234, -1 };
+static int op28[] = { 176, 177, 178, 179, 180, 181, 182, 234, -1 };
+static int op29[] = { 176, 177, 178, 179, 180, 181, 182, 234, -1 };
+static int op30[] = { 176, 177, 178, 179, 180, 181, 182, 234, -1 };
+static int op31[] = { 176, 177, 178, 179, 180, 181, 182, 234, -1 };
+static int op32[] = { 176, 177, 178, 179, 180, 181, 182, 234, -1 };
+static int op33[] = { 176, 177, 178, 179, 180, 181, 182, 234, -1 };
+static int op34[] = { 176, 177, 178, 179, 180, 181, 182, 234, -1 };
+static int op35[] = { 234, -1 };
+static int op36[] = { 231, 233, 234, -1 };
+static int op37[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 233, 234, -1 };
+static int op38[] = { 1, 233, 234, -1 };
+static int op39[] = { 234, -1 };
+static int op40[] = { 234, -1 };
+static int op41[] = { 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 234, -1 };
+static int op42[] = { 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 233, 234, -1 };
+static int op43[] = { 234, -1 };
+static int op44[] = { 233, 234, -1 };
+static int op45[] = { 65, 66, 67, 234, -1 };
+static int op46[] = { 62, 63, 64, 233, 234, -1 };
+static int op47[] = { 232, 234, -1 };
+static int op48[] = { 234, -1 };
+static int op49[] = { 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 229, -1 };
+static int op50[] = { 150, 230, -1 };
+static int op51[] = { 227, 233, 234, -1 };
+static int op52[] = { 233, 234, -1 };
+static int op53[] = { 234, -1 };
+static int op54[] = { 190, 191, 233, 234, -1 };
 static int op55[] = { -1 };
-static int op56[] = { 233, -1 };
-static int op57[] = { 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 232, 233, -1 };
-static int op58[] = { 232, 233, -1 };
+static int op56[] = { 234, -1 };
+static int op57[] = { 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 233, 234, -1 };
+static int op58[] = { 233, 234, -1 };
 
 int *qtable[] = { 
Index: uspace/app/pcc/cc/ccom/mkext/Makefile
===================================================================
--- uspace/app/pcc/cc/ccom/mkext/Makefile	(revision 3e01316fd558e3235487a9cfe2a4fe29615ff69a)
+++ uspace/app/pcc/cc/ccom/mkext/Makefile	(revision 0cf27ee8c50ec7e07748f2e04672e911b9e30b77)
@@ -32,5 +32,5 @@
 OSDIR = ../../../os/helenos
 EXTRA_CFLAGS = -I$(MIPDIR) -I$(MDIR) -I$(OSDIR) -I. -w
-DEFS = -DMKEXT -Dmach_$(PLATFORM) -D__helenos__
+DEFS = -DGCC_COMPAT -DPCC_DEBUG -DMKEXT -Dmach_$(PLATFORM) -D__helenos__
 BINARY = cc_mkext
 
Index: uspace/app/pcc/config.h
===================================================================
--- uspace/app/pcc/config.h	(revision 3e01316fd558e3235487a9cfe2a4fe29615ff69a)
+++ uspace/app/pcc/config.h	(revision 0cf27ee8c50ec7e07748f2e04672e911b9e30b77)
@@ -1,4 +1,3 @@
-
-// FIXME: find out which of them are actually true
+/* Hard-coded, because wiring up configure script would just not be worth the effort. */
 
 /* Using a.out ABI */
@@ -95,10 +94,17 @@
 #define HAVE_VSNPRINTF 1
 
-/* Define if host is BIG endian */
-//#undef HOST_BIG_ENDIAN
+#ifdef __BE__
+	/* Define if host is BIG endian */
+	#define HOST_BIG_ENDIAN
+	/* Define if target defaults to BIG endian */
+	#undef TARGET_BIG_ENDIAN
+#endif
 
-/* Define if host is LITTLE endian */
-#define HOST_LITTLE_ENDIAN
-// FIXME: check architecture
+#ifdef __LE__
+	/* Define if host is LITTLE endian */
+	#define HOST_LITTLE_ENDIAN
+	/* Define if target defaults to LITTLE endian */
+	#define TARGET_LITTLE_ENDIAN
+#endif
 
 /* lex is flex */
@@ -150,10 +156,4 @@
 #define STDINC "/inc/c"
 
-/* Define if target defaults to BIG endian */
-//#undef TARGET_BIG_ENDIAN
-
-/* Define if target defaults to LITTLE endian */
-#define TARGET_LITTLE_ENDIAN
-// FIXME: check architecture
 
 /* Target OS */
@@ -164,5 +164,5 @@
 
 /* Enable thread-local storage (TLS). */
-// #undef TLS
+#define TLS 1
 
 /* Version string */
Index: uspace/app/pcc/os/helenos/ccconfig.h
===================================================================
--- uspace/app/pcc/os/helenos/ccconfig.h	(revision 3e01316fd558e3235487a9cfe2a4fe29615ff69a)
+++ uspace/app/pcc/os/helenos/ccconfig.h	(revision 0cf27ee8c50ec7e07748f2e04672e911b9e30b77)
@@ -81,6 +81,6 @@
 #endif
 
-// XXX: what's STABS?
-// #define STABS
+#define STABS
+
 #ifndef ELFABI
 #define ELFABI
