--- skyeye-v1/arch/arm/common/armvirt.c	2006-08-04 12:40:40.000000000 -0400
+++ skyeye-v1-bkg/arch/arm/common/armvirt.c	2006-10-16 22:59:46.000000000 -0400
@@ -452,6 +452,30 @@
  }
 }
 	 
+/* BKG */
+int ARMul_ICE_ReadHalfWord(ARMul_State * state, ARMword address, ARMword *presult)
+{
+ ARMword data;
+ fault_t fault;
+ fault = GetHalfWord (state, address, &data);
+ if (fault) {
+	 *presult=-1; fault=1; return fault;
+ }else{
+	 *presult=data; fault=0; return fault;
+ }
+}
+	 
+int ARMul_ICE_ReadWord(ARMul_State * state, ARMword address, ARMword *presult)
+{
+ ARMword data;
+ fault_t fault;
+ fault = GetWord (state, address, &data);
+ if (fault) {
+	 *presult=-1; fault=1; return fault;
+ }else{
+	 *presult=data; fault=0; return fault;
+ }
+}
  
 ARMword
 ARMul_ReadByte (ARMul_State * state, ARMword address)
@@ -646,6 +670,24 @@
 	else 
 		return 0;
 }
+int ARMul_ICE_WriteHalfWord (ARMul_State * state, ARMword address, ARMword data)
+{
+	fault_t fault;
+	fault = PutHalfWord (state, address, data);
+	if (fault) 
+		return 1; 
+	else 
+		return 0;
+}
+int ARMul_ICE_WriteWord (ARMul_State * state, ARMword address, ARMword data)
+{
+	fault_t fault;
+	fault = PutWord (state, address, data);
+	if (fault) 
+		return 1; 
+	else 
+		return 0;
+}
 /***************************************************************************\
 *                     Write Byte (but don't tell anyone!)                   *
 \***************************************************************************/
--- skyeye-v1/utils/debugger/arch_reg.c	2006-08-04 13:56:45.000000000 -0400
+++ skyeye-v1-bkg/utils/debugger/arch_reg.c	2006-10-16 23:17:36.000000000 -0400
@@ -128,6 +128,16 @@
 {
 	int i;
 	int fault=0;
+	/* BKG */
+	if (size == 2) {
+		unsigned short temp = (*((unsigned short *) buffer));
+		fault=arch_instance->ICE_write_halfword(addr, temp);
+	} else 
+	if (size == 4) {
+		unsigned int temp = (*((unsigned int *) buffer));
+		fault=arch_instance->ICE_write_word(addr, temp);
+	} else 
+	/* end BKG */
 	for (i = 0; i < size; i++) {
 		fault=arch_instance->ICE_write_byte(addr + i, buffer[i]); 
 		if(fault) return -1; 
@@ -141,6 +151,14 @@
 	int i;
 	int fault=0;
 	unsigned char v;
+	/* BKG */
+	if (size == 2) {
+		fault=arch_instance->ICE_read_halfword(addr, buffer);
+	} else 
+	if (size == 4) {
+		fault=arch_instance->ICE_read_word(addr, buffer);
+	} else 
+	/* end BKG */
 	for (i = 0; i < size; i++) {
 		fault=arch_instance->ICE_read_byte(addr + i, &v);
 		if(fault) return -1; 
--- skyeye-v1/utils/config/skyeye_config.h	2006-08-04 12:40:41.000000000 -0400
+++ skyeye-v1-bkg/utils/config/skyeye_config.h	2006-10-16 22:48:44.000000000 -0400
@@ -262,6 +262,10 @@
 	//chy 2006-04-15
 	int (*ICE_write_byte) (WORD addr, uint8_t data);
 	int (*ICE_read_byte)(WORD addr, uint8_t *pv);	
+	int (*ICE_write_halfword) (WORD addr, uint16_t data); // BKG
+	int (*ICE_read_halfword)(WORD addr, uint16_t *pv);	 // BKG
+	int (*ICE_write_word) (WORD addr, uint32_t data); // BKG
+	int (*ICE_read_word)(WORD addr, uint32_t *pv);	 // BKG
 	int (*parse_cpu) (const char *param[]);
 	int (*parse_mach) (machine_config_t * mach, const char *param[]);
 	int (*parse_mem) (int num_params, const char *params[]);
--- skyeye-v1/Makefile	2006-08-04 14:33:20.000000000 -0400
+++ skyeye-v1-bkg/Makefile	2006-10-08 13:30:53.000000000 -0400
@@ -22,6 +22,8 @@
 #if you want to add DBCT Acceleration Function In X86 32bit system AND gcc version = 3.x.x, comment below line
 NO_DBCT = 1
 
+NO_LCD = 1
+
 prefix = /usr/local
 exec_prefix = ${prefix}
 
--- skyeye-v1/utils/main/skyeye.c	2006-08-04 14:24:37.000000000 -0400
+++ skyeye-v1-bkg/utils/main/skyeye.c	2006-10-16 22:47:51.000000000 -0400
@@ -96,6 +96,10 @@
 		arch_instance->get_pc = skyeye_config.arch->get_pc;
 		arch_instance->ICE_write_byte = skyeye_config.arch->ICE_write_byte;
 		arch_instance->ICE_read_byte = skyeye_config.arch->ICE_read_byte;
+		arch_instance->ICE_write_halfword = skyeye_config.arch->ICE_write_halfword; // BKG
+		arch_instance->ICE_read_halfword = skyeye_config.arch->ICE_read_halfword; // BKG
+		arch_instance->ICE_write_word = skyeye_config.arch->ICE_write_word; // BKG
+		arch_instance->ICE_read_word = skyeye_config.arch->ICE_read_word; // BKG
 
 		arch_instance->init ();
 		//chy:2003-08-19, after mach_init, because ARMul_Reset should after ARMul_SelectProcess
--- skyeye-v1/utils/config/skyeye_types.h	2006-04-15 05:25:06.000000000 -0400
+++ skyeye-v1-bkg/utils/config/skyeye_types.h	2006-10-16 22:46:34.000000000 -0400
@@ -14,5 +14,10 @@
 	//chy 2004-04-15 
 	int (*ICE_write_byte) (WORD addr, uint8_t v);
 	int (*ICE_read_byte)(WORD addr, uint8_t *pv);
+	int (*ICE_write_halfword) (WORD addr, uint16_t v); // BKG
+	int (*ICE_read_halfword)(WORD addr, uint16_t *pv); // BKG
+	int (*ICE_write_word) (WORD addr, uint32_t v); // BKG
+	int (*ICE_read_word)(WORD addr, uint32_t *pv); // BKG
+
 } generic_arch_t;
 #endif
--- skyeye-v1/arch/arm/common/armsupp.c	2006-08-04 12:40:40.000000000 -0400
+++ skyeye-v1-bkg/arch/arm/common/armsupp.c	2006-10-13 22:29:01.000000000 -0400
@@ -775,6 +775,7 @@
 		return TRUE;
 	}
 	else if (!state->NirqSig && !IFLAG) {
+		printf("[IntP] ");
 		ARMul_Abort (state, ARMul_IRQV);
 		return TRUE;
 	}
--- skyeye-v1/arch/arm/common/armemu.c	2006-08-04 13:56:45.000000000 -0400
+++ skyeye-v1-bkg/arch/arm/common/armemu.c	2006-10-13 23:15:56.000000000 -0400
@@ -593,6 +593,7 @@
 			break;
 		}
 		else if (!state->NirqSig && !IFLAG) {
+			//printf("."); /* BKG */
 			ARMul_Abort (state, ARMul_IRQV);
 			/*added energy_prof statement by ksh in 2004-11-26 */
 			//chy 2005-07-28 for standalone
@@ -4164,6 +4165,7 @@
 			break;
 		case TRAP_IRQ:
 			{
+				printf("[TIRQ] ");
 				//TEA_OUT(printf("TRAP_IRQ\n"));
 				state->Reg[15] += INSN_SIZE;
 				ARMul_Abort (state, ARMul_IRQV);
--- skyeye-v1/arch/arm/common/arminit.c	2006-08-04 12:40:40.000000000 -0400
+++ skyeye-v1-bkg/arch/arm/common/arminit.c	2006-10-17 10:18:26.000000000 -0400
@@ -572,6 +572,7 @@
 			SETABORT (IBIT,
 				  state->prog32Sig ? IRQ32MODE : IRQ26MODE,
 				  esize);
+		// printf("[Abort IRQV at 0x%x] \n",state->Reg[15]); /* BKG */
 		break;
 	case ARMul_FIQV:	/* FIQ */
 		//chy 2003-09-02 the if sentence seems no use
@@ -591,6 +592,7 @@
 	}
 	else
 		ARMul_SetR15 (state, R15CCINTMODE | vector);
+		// printf("[Vector now set to 0x%x] \n",state->Reg[15]); /* BKG */
 #if 0
 	if (ARMul_ReadWord (state, ARMul_GetPC (state)) == 0) {
 		/* No vector has been installed.  Rather than simulating whatever
--- skyeye-v1/arch/arm/mach/skyeye_mach_s3c44b0.c	2006-08-04 12:40:41.000000000 -0400
+++ skyeye-v1-bkg/arch/arm/mach/skyeye_mach_s3c44b0.c	2006-10-17 12:59:22.000000000 -0400
@@ -122,6 +122,8 @@
 	ARMword requests = io.intpnd & (~io.intmsk & INT_MASK_INIT);
 	state->NfiqSig = (requests & io.intmod) ? LOW : HIGH;
 	state->NirqSig = (requests & ~io.intmod) ? LOW : HIGH;
+	//printf("[IntUD %d - 0x%x & 0x%x = 0x%x]\n",state->NirqSig,
+//				io.intpnd,~io.intmsk,requests);	/* BKG */
 }
 static void
 s3c44b0_set_interrupt (unsigned int irq)
@@ -129,13 +131,18 @@
 	/*if (ENABLE_IRQ){
 	   io.i_ispr =  (1 << interrupt);
 	   } */
+		 // printf("[SetInt %d] ",irq);
 	if (ENABLE_IRQ | ENABLE_FIQ) {
 		io.intpnd |= (1 << irq);
+	} else {
+		//printf("[DISABLED]\n"); /* BKG */
 	}
 }
 static void
 s3c44b0_io_reset (ARMul_State * state)
 {
+	printf("IO RESET\n");
+	printf("IN %s\n",__FUNCTION__);
 	memset (&s3c44b0_io, 0, sizeof (s3c44b0_io));
 	io.syscfg = 0x01;
 	/*Interrupt register reset */
@@ -253,6 +260,7 @@
 	}
 //      s3c44b0_update_int(state);
 }
+#error BKG put this here
 #else
 /*s3c44b0 io_do_cycle*/
 void
@@ -299,6 +307,7 @@
 				io.urxh0 = io.urxh1 = (int) buf;
 				io.utrstat0 |= UART_LSR_DR;
 				io.utrstat1 |= UART_LSR_DR;
+				io.ufstat0 = (io.ufstat0 & 0xfff0) | 1; /* BKG */
 				if ((io.ucon0 & 0x3) == 0x1) {
 					s3c44b0_set_interrupt (INT_URXD0);
 					s3c44b0_update_int (state);
@@ -343,8 +352,8 @@
 	switch (addr) {
 	case SYSCFG:
 		data = io.syscfg;
-		printf ("%s (addr = 0x%08x), pc:%x, NumInstrs:%x\n",
-			__FUNCTION__, addr, state->pc, state->NumInstrs);
+//		printf ("%s (addr = 0x%08x), pc:%x, NumInstrs:%x\n",
+//			__FUNCTION__, addr, state->pc, state->NumInstrs);
 		//printf("instr:%x\n",state->loaded);
 		break;
 		/*Interrupt */
@@ -359,6 +368,7 @@
 		break;
 	case INTMSK:
 		data = io.intmsk;
+		// printf("Read INTMSK returning 0x%x\n",data); BKG
 		break;
 	case I_PSLV:
 		data = io.i_pslv;
@@ -449,10 +459,12 @@
 		break;
 	case URXH0:
 		data = io.urxh0;
+		io.ufstat0 &= 0xfff0; /* BKG */
 		io.utrstat0 &= ~UART_LSR_DR;
 		break;
 	case URXH1:
 		data = io.urxh1;
+		io.ufstat1 &= 0xfff0; /* BKG */
 		io.utrstat1 &= ~UART_LSR_DR;
 		break;
 	case UBRDIV0:
@@ -491,7 +503,7 @@
 	case TCNTO5:
 		break;
 	default:
-		SKYEYE_DBG ("%s (addr = 0x%08x)\n", __FUNCTION__, addr);
+//		SKYEYE_DBG ("%s (addr = 0x%08x)\n", __FUNCTION__, addr);
 		break;
 	}
 	return data;
@@ -511,8 +523,10 @@
 s3c44b0_io_write_halfword (ARMul_State * state, ARMword addr, ARMword data)
 {
 	s3c44b0_io_write_word (state, addr, data);
+/*
 	printf ("SKYEYE: s3c44b0_io_write_halfword error\n");
 	skyeye_exit (-1);
+*/
 }
 
 void
@@ -534,6 +548,8 @@
 		break;
 	case INTMSK:
 		io.intmsk = data;
+		s3c44b0_update_int (state); /* BKG */
+		// printf("Write INTMSK Setting 0x%x\n",io.intmsk); BKG
 		break;
 	case I_PSLV:
 		io.i_pslv = data;
@@ -551,14 +567,17 @@
 		   io.i_ispr = data;
 		   break; */
 	case I_ISPC:
-		io.intpnd &= (~data & INT_MASK_INIT);
+		 // printf("[IntWrite 0x%x From 0x%x",data,io.intpnd); /* BKG */
+		io.intpnd &= (~data);
 		//io.i_ispr = 0;
-		//s3c44b0_update_int(state);
+		//	printf(" to 0x%x] ",io.intpnd); /* BKG */
+		s3c44b0_update_int(state); /* BKG UNCOMMNTED */
 		break;
 		/*case F_ISPR:      
 		   io.f_ispr = data;
 		   break; */
 	case F_ISPC:
+		// printf("[FIntWrite 0x%x] ",data);
 		io.intpnd &= (~data & INT_MASK_INIT);
 		//s3c44b0_update_int(state);
 		break;
@@ -617,6 +636,7 @@
 			write (skyeye_config.uart.fd_out, &c, 1);
 			io.utrstat0 |= UART_LSR_THRE | UART_LSR_TEMT;
 			if ((io.ucon0 & 0xc) == 0x04) {
+				//printf("[TXI] "); /* BKG */
 				s3c44b0_set_interrupt (INT_UTXD0);
 				s3c44b0_update_int (state);
 			}
@@ -684,8 +704,8 @@
 		io.tcntb[5] = data;	//* 480;
 		break;
 	default:
-		SKYEYE_DBG ("%s(0x%08x) = 0x%08x\n", __FUNCTION__, addr,
-			    data);
+//		SKYEYE_DBG ("%s(0x%08x) = 0x%08x\n", __FUNCTION__, addr,
+//			    data);
 		break;
 
 	}
@@ -698,7 +718,7 @@
 	state->lateabtSig = HIGH;
 
 	state->Reg[1] = 178;
-
+	printf("IN %s\n",__FUNCTION__);
 	this_mach->mach_io_do_cycle = s3c44b0_io_do_cycle;
 	this_mach->mach_io_reset = s3c44b0_io_reset;
 	this_mach->mach_io_read_word = s3c44b0_io_read_word;
--- skyeye-v1/arch/arm/common/arm_arch_interface.c	2006-06-10 12:23:28.000000000 -0400
+++ skyeye-v1-bkg/arch/arm/common/arm_arch_interface.c	2006-10-16 23:11:01.000000000 -0400
@@ -100,6 +100,25 @@
 static int arm_ICE_read_byte (WORD addr, uint8_t *pv){
 	return (ARMul_ICE_ReadByte (state, (ARMword) addr, (ARMword *)pv));
 }
+
+/* BKG */
+static uint16_t arm_ICE_read_halfword (WORD addr, uint16_t *pv){
+	return (ARMul_ICE_ReadHalfWord (state, (ARMword) addr, (ARMword *)pv));
+}
+static int
+arm_ICE_write_halfword (WORD addr, uint16_t v)
+{
+	return (ARMul_ICE_WriteHalfWord (state, (ARMword) addr, (ARMword) v));
+}
+
+static uint16_t arm_ICE_read_word (WORD addr, uint32_t *pv){
+	return (ARMul_ICE_ReadWord (state, (ARMword) addr, (ARMword *)pv));
+}
+static int
+arm_ICE_write_word (WORD addr, uint32_t v)
+{
+	return (ARMul_ICE_WriteWord (state, (ARMword) addr, (ARMword) v));
+}
 extern void at91_mach_init ();
 extern void ep7312_mach_init ();
 extern void lh79520_mach_init ();
@@ -376,6 +395,10 @@
 	arm_arch.step_once = arm_step_once;
 	arm_arch.ICE_write_byte = arm_ICE_write_byte;
 	arm_arch.ICE_read_byte = arm_ICE_read_byte;
+	arm_arch.ICE_write_halfword = arm_ICE_write_halfword;
+	arm_arch.ICE_read_halfword = arm_ICE_read_halfword;
+	arm_arch.ICE_write_word = arm_ICE_write_word;
+	arm_arch.ICE_read_word = arm_ICE_read_word;
 	arm_arch.parse_cpu = arm_parse_cpu;
 	arm_arch.parse_mach = arm_parse_mach;
 	arm_arch.parse_mem = arm_parse_mem;
--- skyeye-v1/device/skyeye_device.c	2005-10-10 01:04:10.000000000 -0400
+++ skyeye-v1-bkg/device/skyeye_device.c	2006-10-09 16:51:44.000000000 -0400
@@ -113,7 +113,7 @@
 		mod_set->initialized = 1;
 	}
 	if ((dev_mod = find_module (conf->type, mod_set)) == NULL) {
-		SKYEYE_ERR ("can't find device module: %s\n", conf->type);
+		SKYEYE_ERR ("can't find device module: %s for %s\n", conf->type,dev_name);
 		return 1;
 	}
 	mc->devices = realloc (mc->devices,
