📄 armflash.c
字号:
#include <sys/time.h>#include <sys/types.h>#include <unistd.h>//koodailar add for mingw 2005.12.18 ----------------------------------------#ifdef __MINGW32__#include "arch/arm/common/armdefs.h"#else#include "armdefs.h"#endif// end ----------------------------------------------------------------------ARMwordflash_read_byte (ARMul_State * state, ARMword addr){ struct device_desc *dev; ARMword data; int i; for (i = 0; i < skyeye_config.mach->dev_count; i++) { dev = skyeye_config.mach->devices[i]; if (!dev->read_byte) continue; /* if we specify size=0, we don't check * whether "addr" is in the range of address space of device. * */ if (dev->size == 0) { if (dev->read_byte (dev, addr, (u8 *) & data) != ADDR_NOHIT) return data & 0xff; } else if ((addr >= dev->base) && (addr < (dev->base + dev->size))) { if (dev->read_byte (dev, addr, (u8 *) & data) != ADDR_NOHIT) return data & 0xff; } }}ARMwordflash_read_halfword (ARMul_State * state, ARMword addr){ struct device_desc *dev; ARMword data; int i; for (i = 0; i < skyeye_config.mach->dev_count; i++) { dev = skyeye_config.mach->devices[i]; if (!dev->read_halfword) continue; /* if we specify size=0, we don't check * whether "addr" is in the range of address space of device. * */ if (dev->size == 0) { if (dev->read_halfword (dev, addr, (u16 *) & data) != ADDR_NOHIT) return data & 0xffff; } else if ((addr >= dev->base) && (addr < (dev->base + dev->size))) { if (dev->read_halfword (dev, addr, (u16 *) & data) != ADDR_NOHIT) return data & 0xffff; } }}ARMwordflash_read_word (ARMul_State * state, ARMword addr){ struct device_desc *dev; ARMword data; int i; for (i = 0; i < skyeye_config.mach->dev_count; i++) { dev = skyeye_config.mach->devices[i]; if (!dev->read_word) continue; /* if we specify size=0, we don't check * whether "addr" is in the range of address space of device. * */ if (dev->size == 0) { if (dev->read_word (dev, addr, (u32 *) & data) != ADDR_NOHIT) return data; } else if ((addr >= dev->base) && (addr < (dev->base + dev->size))) { if (dev->read_word (dev, addr, (u32 *) & data) != ADDR_NOHIT) return data; } }}voidflash_write_byte (ARMul_State * state, ARMword addr, ARMword data){ struct device_desc *dev; int i; for (i = 0; i < skyeye_config.mach->dev_count; i++) { dev = skyeye_config.mach->devices[i]; if (!dev->write_byte) continue; /* if we specify size=0, we don't check * whether "addr" is in the range of address space of device. * */ if (dev->size == 0) { if (dev->write_byte (dev, addr, (u8) data) != ADDR_NOHIT) return; } else if ((addr >= dev->base) && (addr < (dev->base + dev->size))) { if (dev->write_byte (dev, addr, (u8) data) != ADDR_NOHIT) return; } }}voidflash_write_halfword (ARMul_State * state, ARMword addr, ARMword data){ struct device_desc *dev; int i; for (i = 0; i < skyeye_config.mach->dev_count; i++) { dev = skyeye_config.mach->devices[i]; if (!dev->write_halfword) continue; /* if we specify size=0, we don't check * whether "addr" is in the range of address space of device. * */ if (dev->size == 0) { if (dev->write_halfword (dev, addr, (u16) data) != ADDR_NOHIT) return; } else if ((addr >= dev->base) && (addr < (dev->base + dev->size))) { if (dev->write_halfword (dev, addr, (u16) data) != ADDR_NOHIT) return; } }}voidflash_write_word (ARMul_State * state, ARMword addr, ARMword data){ struct device_desc *dev; int i; for (i = 0; i < skyeye_config.mach->dev_count; i++) { dev = skyeye_config.mach->devices[i]; if (!dev->write_word) continue; /* if we specify size=0, we don't check * whether "addr" is in the range of address space of device. * */ if (dev->size == 0) { if (dev->write_word (dev, addr, data) != ADDR_NOHIT) return; } else if ((addr >= dev->base) && (addr < (dev->base + dev->size))) { if (dev->write_word (dev, addr, data) != ADDR_NOHIT) return; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -