Index: uspace/app/pcc/cc/ccom/arch/amd64/external.c
===================================================================
--- uspace/app/pcc/cc/ccom/arch/amd64/external.c	(revision 597466186f14d9d212428c08a263da0d9fa06d3c)
+++ uspace/app/pcc/cc/ccom/arch/amd64/external.c	(revision 597466186f14d9d212428c08a263da0d9fa06d3c)
@@ -0,0 +1,246 @@
+#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 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 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 op55[] = { -1 };
+static int op56[] = { -1 };
+static int op57[] = { -1 };
+static int op58[] = { -1 };
+
+int *qtable[] = { 
+	op0,
+	op1,
+	op2,
+	op3,
+	op4,
+	op5,
+	op6,
+	op7,
+	op8,
+	op9,
+	op10,
+	op11,
+	op12,
+	op13,
+	op14,
+	op15,
+	op16,
+	op17,
+	op18,
+	op19,
+	op20,
+	op21,
+	op22,
+	op23,
+	op24,
+	op25,
+	op26,
+	op27,
+	op28,
+	op29,
+	op30,
+	op31,
+	op32,
+	op33,
+	op34,
+	op35,
+	op36,
+	op37,
+	op38,
+	op39,
+	op40,
+	op41,
+	op42,
+	op43,
+	op44,
+	op45,
+	op46,
+	op47,
+	op48,
+	op49,
+	op50,
+	op51,
+	op52,
+	op53,
+	op54,
+	op55,
+	op56,
+	op57,
+	op58,
+};
+int tempregs[] = { -1 };
+int permregs[] = { -1 };
+bittype validregs[] = {
+	0x7fffffffff,
+};
+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 }
+};
+int
+aliasmap(int class, int regnum)
+{
+	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, },
+};
+
+int
+color2reg(int color, int class)
+{
+	return rmap[class-1][color];
+}
+int regK[] = { 0, 0, 0, 0, 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 == CLASSD) return 0x0;
+	if(class == CLASSE) return 0x0;
+	if(class == CLASSF) return 0x0;
+	return 0x0;
+}
+static bittype ovlarr[MAXREGS][1] = {
+{ 0x1f0301,  },
+{ 0x1e10c02,  },
+{ 0xe223004,  },
+{ 0x3244c008,  },
+{ 0x54880010,  },
+{ 0x69100020,  },
+{ 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,  },
+{ 0x80000000,  },
+{ 0x1,  },
+{ 0x2,  },
+{ 0x4,  },
+{ 0x8,  },
+{ 0x10,  },
+{ 0x20,  },
+{ 0x40,  },
+};
+int
+interferes(int reg1, int reg2)
+{
+return (TESTBIT(ovlarr[reg1], reg2)) != 0;
+}
