⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 armmem.c

📁 skyeye 仿真软件
💻 C
📖 第 1 页 / 共 2 页
字号:
		   //AJ2D----------------------------------------------------------		   }		 */		//mbp->write_halfword(state, addr, data);		global_mbp->write_halfword (state, addr, data);	}	else {		//fprintf(stderr, "SKYEYE:NumInstrs %llu, mem_write_halfword addr = %x no bank\n",state->NumInstrs, addr);		//chy 2003-09-03		//SKYEYE_OUTREGS(stderr);		//exit(-1);	}}voidmem_write_word (ARMul_State * state, ARMword addr, ARMword data){//chy 2003-07-10 chy: lyh change //      bank_ptr(addr)->write_word(state, addr, data);	//mem_bank_t *mbp = bank_ptr(addr);	global_mbp = bank_ptr (addr);	//if (mbp && mbp->write_word){	if (global_mbp && global_mbp->write_word) {		/*ywc 2005-03-31 */		/*ywc 2005-04-22 move it to real_write_word */		/*		   if(!skyeye_config.no_dbct){		   //teawater add for arm2x86 2005.03.18----------------------------------		   tb_setdirty(state, addr, mbp);		   //AJ2D----------------------------------------------------------		   }		 */		//mbp->write_word(state, addr, data);		global_mbp->write_word (state, addr, data);	}	else {		//fprintf(stderr, "SKYEYE:NumInstrs %llu, mem_write_word addr = %x no bank\n",state->NumInstrs, addr);		//chy 2003-09-03		//SKYEYE_OUTREGS(stderr);		//exit(-1);	}}/* if you want a wanring about strange accesses put this on the region */ARMwordwarn_read_word (ARMul_State * state, ARMword addr){	fprintf (stderr, "WARNING: illegal read from 0x%x @ 0x%x\n", addr,		 state->pc);	return (0xffffffff);}voidwarn_write_byte (ARMul_State * state, ARMword addr, ARMword data){	fprintf (stderr,		 "SKYEYE: WARNING: illegal write byte to 0x%x of 0x%x @ 0x%x\n",		 addr, data, state->pc);}voidwarn_write_halfword (ARMul_State * state, ARMword addr, ARMword data){	fprintf (stderr,		 "SKYEYE: WARNING: illegal write halfword to 0x%x of 0x%x @ 0x%x\n",		 addr, data, state->pc);}voidwarn_write_word (ARMul_State * state, ARMword addr, ARMword data){	fprintf (stderr,		 "SKYEYE: WARNING: illegal write word to 0x%x of 0x%x @ 0x%x\n",		 addr, data, state->pc);}/* Accesses that map to gaps in the memory map go here: */ARMwordfail_read_word (ARMul_State * state, ARMword addr){	fprintf (stderr, "illegal read from 0x%x\n", addr);	ARMul_Debug (state, 0, 0);	return (0xffffffff);}voidfail_write_word (ARMul_State * state, ARMword addr, ARMword data){	fprintf (stderr, "illegal write to 0x%x of 0x%x\n", addr, data);	ARMul_Debug (state, 0, 0);}ARMword_read_word (ARMul_State * state, ARMword addr){	fprintf (stderr, "undefined read from 0x%x\n", addr);	return (0xffffffff);}void_write_word (ARMul_State * state, ARMword addr, ARMword data){	fprintf (stderr, "undefined write to 0x%x of 0x%x\n", addr, data);}ARMwordreal_read_byte (ARMul_State * state, ARMword addr){	ARMword data, offset;	/*	   mem_bank_t *mbp = bank_ptr(addr);	   if(!mbp)	   {	   fprintf(stderr, "real_read_byte. No bank at address 0x%x", addr);	   return 0;	   }	 */	//data = state->mem.rom[mbp - skyeye_config.mem.mem_banks][(addr - mbp->addr) >> 2];	data = state->mem.rom[global_mbp -			      state->mem_bank->mem_banks][(addr -							   global_mbp->							   addr) >> 2];	offset = (((ARMword) state->bigendSig * 3) ^ (addr & 3)) << 3;	/* bit offset into the word */	return (data >> offset & 0xffL);}ARMwordreal_read_halfword (ARMul_State * state, ARMword addr){	ARMword data, offset;	/*	   mem_bank_t *mbp = bank_ptr(addr);	   if(!mbp)	   {	   fprintf(stderr, "real_read_halfword. No bank at address 0x%x", addr);	   return 0;	   }	 */	//data = state->mem.rom[mbp - skyeye_config.mem.mem_banks][(addr - mbp->addr) >> 2];	data = state->mem.rom[global_mbp -			      state->mem_bank->mem_banks][(addr -							   global_mbp->							   addr) >> 2];	offset = (((ARMword) state->bigendSig * 2) ^ (addr & 2)) << 3;	/* bit offset into the word */	return (data >> offset) & 0xffff;}ARMwordreal_read_word (ARMul_State * state, ARMword addr){	ARMword data;	/*  	   mem_bank_t *mbp = bank_ptr(addr);	   if(!mbp)	   {	   fprintf(stderr, "real_read_word. No bank at address 0x%x", addr);	   return 0;	   }	 */	//data = state->mem.rom[mbp - skyeye_config.mem.mem_banks][(addr - mbp->addr) >> 2];	data = state->mem.rom[global_mbp -			      state->mem_bank->mem_banks][(addr -							   global_mbp->							   addr) >> 2];	return data;}voidreal_write_byte (ARMul_State * state, ARMword addr, ARMword data){	ARMword *temp, offset;	/*	   mem_bank_t *mbp = bank_ptr(addr);	   if(!mbp)	   {	   fprintf(stderr, "real_write_byte. No bank at address 0x%x", addr);	   return;	   }	 */	/*ywc 2005-04-22, I move it from mem_write_byte to here */#ifndef NO_DBCT	if (!skyeye_config.no_dbct) {		//teawater add for arm2x86 2005.03.18----------------------------------		//tb_setdirty(state, addr, mbp);		tb_setdirty (state, addr, global_mbp);		//AJ2D----------------------------------------------------------	}#endif	//temp = &state->mem.rom[mbp - skyeye_config.mem.mem_banks][(addr - mbp->addr) >> 2];	temp = &state->mem.rom[global_mbp -			       state->mem_bank->mem_banks][(addr -							    global_mbp->							    addr) >> 2];	offset = (((ARMword) state->bigendSig * 3) ^ (addr & 3)) << 3;	/* bit offset into the word */	//printf(stderr,"SKYEYE real_write_byte 1: temp %x,tempval %x,offset %x, addr %x, data %x\n",temp,*temp,offset,addr,data);	*temp = (*temp & ~(0xffL << offset)) | ((data & 0xffL) << offset);	//printf(stderr,"SKYEYE real_write_byte 2: temp %x,tempval %x,offset %x, addr %x, data %x\n",temp,*temp,offset,addr,data);	//chy 2004-03-11: add lcd test	//chy 2004-03-17 fix a bug: didn't test skyeye_config.no_lcd	//chy 2004-09-29 disable blow lines	/*	   if((!skyeye_config.no_lcd) && *(state->mach_io.lcd_is_enable) && addr >= *(state->mach_io.lcd_addr_begin) && addr <= *(state->mach_io.lcd_addr_end)){	   //fprintf(stderr, "SKYEYE,lcd enabled  write byte lcd memory addr %x, data %x\n",addr,*temp);	   skyeye_config.mach->mach_lcd_write(state,addr,*temp);	   }	 */}voidreal_write_halfword (ARMul_State * state, ARMword addr, ARMword data){	ARMword *temp, offset;	/*	   mem_bank_t *mbp = bank_ptr(addr);	   if (!mbp)	   {	   fprintf(stderr, "real_write_halfword error. No bank at address 0x%x.\n", addr);	   return;	   }	 */	/*ywc 2005-04-22, I move it from mem_write_byte to here */#ifndef NO_DBCT	if (!skyeye_config.no_dbct) {		//teawater add for arm2x86 2005.03.18----------------------------------		//tb_setdirty(state, addr, mbp);		tb_setdirty (state, addr, global_mbp);		//AJ2D----------------------------------------------------------	}#endif	//temp = &state->mem.rom[mbp - skyeye_config.mem.mem_banks][(addr - mbp->addr) >> 2];	temp = &state->mem.rom[global_mbp -			       state->mem_bank->mem_banks][(addr -							    global_mbp->							    addr) >> 2];	offset = (((ARMword) state->bigendSig * 2) ^ (addr & 2)) << 3;	/* bit offset into the word */	*temp = (*temp & ~(0xffffL << offset)) | ((data & 0xffffL) << offset);	//chy 2004-03-11: add lcd test	//chy 2004-03-17 fix a bug: didn't test skyeye_config.no_lcd	//chy 2004-09-29 disable blow lines	/*	   if((!skyeye_config.no_lcd) && *(state->mach_io.lcd_is_enable) && addr >= *(state->mach_io.lcd_addr_begin) && addr <= *(state->mach_io.lcd_addr_end)){	   //fprintf(stderr, "SKYEYE,lcd enabled  write byte lcd memory addr %x, data %x\n",addr,*temp);	   skyeye_config.mach->mach_lcd_write(state,addr,*temp);	   }	 */}voidreal_write_word (ARMul_State * state, ARMword addr, ARMword data){	/*	   mem_bank_t *mbp = bank_ptr(addr);	   if(!mbp)	   {	   fprintf(stderr, "real_write_word. No bank at address 0x%x", addr);	   return ;	   }	 */	/*ywc 2005-04-22, I move it from mem_write_byte to here */#ifndef NO_DBCT	if (!skyeye_config.no_dbct) {		//teawater add for arm2x86 2005.03.18----------------------------------		//tb_setdirty(state, addr, mbp);		tb_setdirty (state, addr, global_mbp);		//AJ2D----------------------------------------------------------	}#endif	//state->mem.rom[mbp - skyeye_config.mem.mem_banks][(addr - mbp->addr) >> 2] = data;	state->mem.rom[global_mbp -		       state->mem_bank->mem_banks][(addr -						    global_mbp->addr) >> 2] =		data;	//chy 2004-03-11: add lcd test	//chy 2004-03-17 fix a bug: didn't test skyeye_config.no_lcd	//chy 2004-09-29 disable blow lines	/*	   if((!skyeye_config.no_lcd) && *(state->mach_io.lcd_is_enable) && addr >= *(state->mach_io.lcd_addr_begin) && addr <= *(state->mach_io.lcd_addr_end)){	   //fprintf(stderr, "SKYEYE,lcd enabled  write byte lcd memory addr %x, data %x\n",addr,*temp);	   skyeye_config.mach->mach_lcd_write(state,addr,data);	   }	 */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -