本文整理汇总了C++中cpu_abort函数的典型用法代码示例。如果您正苦于以下问题:C++ cpu_abort函数的具体用法?C++ cpu_abort怎么用?C++ cpu_abort使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cpu_abort函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: goldfish_timer_read
static uint32_t goldfish_timer_read(void *opaque, target_phys_addr_t offset)
{
struct timer_state *s = (struct timer_state *)opaque;
switch(offset) {
case TIMER_TIME_LOW:
s->now_ns = tks2ns(qemu_get_clock(vm_clock));
return s->now_ns;
case TIMER_TIME_HIGH:
return s->now_ns >> 32;
default:
cpu_abort (cpu_single_env, "goldfish_timer_read: Bad offset %x\n", offset);
return 0;
}
}
开发者ID:Andproject,项目名称:platform_external_qemu,代码行数:14,代码来源:goldfish_timer.c
示例2: goldfish_rtc_read
static uint32_t goldfish_rtc_read(void *opaque, target_phys_addr_t offset)
{
struct rtc_state *s = (struct rtc_state *)opaque;
switch(offset) {
case 0x0:
s->now = (int64_t)time(NULL) * 1000000000;
return s->now;
case 0x4:
return s->now >> 32;
default:
cpu_abort (cpu_single_env, "goldfish_rtc_read: Bad offset %x\n", offset);
return 0;
}
}
开发者ID:Andproject,项目名称:platform_external_qemu,代码行数:14,代码来源:goldfish_timer.c
示例3: trace_dev_read
/* I/O read */
static uint32_t trace_dev_read(void *opaque, target_phys_addr_t offset)
{
trace_dev_state *s = (trace_dev_state *)opaque;
offset -= s->base;
switch (offset >> 2) {
case TRACE_DEV_REG_ENABLE: // tracing enable
return tracing;
default:
cpu_abort(cpu_single_env, "trace_dev_read: Bad offset %x\n", offset);
return 0;
}
return 0;
}
开发者ID:Katarzynasrom,项目名称:patch-hosting-for-android-x86-support,代码行数:15,代码来源:goldfish_trace.c
示例4: s390_env_get_cpu
LowCore *cpu_map_lowcore(CPUS390XState *env)
{
S390CPU *cpu = s390_env_get_cpu(env);
LowCore *lowcore;
hwaddr len = sizeof(LowCore);
lowcore = cpu_physical_memory_map(env->psa, &len, 1);
if (len < sizeof(LowCore)) {
cpu_abort(CPU(cpu), "Could not map lowcore\n");
}
return lowcore;
}
开发者ID:CTU-IIG,项目名称:qemu,代码行数:14,代码来源:helper.c
示例5: goldfish_battery_write
static void goldfish_battery_write(void *opaque, target_phys_addr_t offset, uint32_t val)
{
struct goldfish_battery_state *s = opaque;
switch(offset) {
case BATTERY_INT_ENABLE:
s->int_enable = val;
break;
default:
cpu_abort (cpu_single_env, "goldfish_audio_write: Bad offset %x\n", offset);
}
}
开发者ID:qtekfun,项目名称:htcDesire820Kernel,代码行数:14,代码来源:goldfish_battery.c
示例6: openrisc_cpu_do_interrupt
void openrisc_cpu_do_interrupt(CPUState *cs)
{
OpenRISCCPU *cpu = OPENRISC_CPU(cs);
CPUOpenRISCState *env = &cpu->env;
#ifndef CONFIG_USER_ONLY
if (env->flags & D_FLAG) { /* Delay Slot insn */
env->flags &= ~D_FLAG;
env->sr |= SR_DSX;
if (env->exception_index == EXCP_TICK ||
env->exception_index == EXCP_INT ||
env->exception_index == EXCP_SYSCALL ||
env->exception_index == EXCP_FPE) {
env->epcr = env->jmp_pc;
} else {
env->epcr = env->pc - 4;
}
} else {
if (env->exception_index == EXCP_TICK ||
env->exception_index == EXCP_INT ||
env->exception_index == EXCP_SYSCALL ||
env->exception_index == EXCP_FPE) {
env->epcr = env->npc;
} else {
env->epcr = env->pc;
}
}
/* For machine-state changed between user-mode and supervisor mode,
we need flush TLB when we enter&exit EXCP. */
tlb_flush(env, 1);
env->esr = env->sr;
env->sr &= ~SR_DME;
env->sr &= ~SR_IME;
env->sr |= SR_SM;
env->sr &= ~SR_IEE;
env->sr &= ~SR_TEE;
env->tlb->cpu_openrisc_map_address_data = &cpu_openrisc_get_phys_nommu;
env->tlb->cpu_openrisc_map_address_code = &cpu_openrisc_get_phys_nommu;
if (env->exception_index > 0 && env->exception_index < EXCP_NR) {
env->pc = (env->exception_index << 8);
} else {
cpu_abort(env, "Unhandled exception 0x%x\n", env->exception_index);
}
#endif
env->exception_index = -1;
}
开发者ID:01org,项目名称:KVMGT-qemu,代码行数:49,代码来源:interrupt.c
示例7: arm_timer_write
static void arm_timer_write(void *opaque, target_phys_addr_t offset,
uint32_t value)
{
arm_timer_state *s = (arm_timer_state *)opaque;
int freq;
switch (offset >> 2) {
case 0: /* TimerLoad */
s->limit = value;
arm_timer_recalibrate(s, 1);
break;
case 1: /* TimerValue */
/* ??? Linux seems to want to write to this readonly register.
Ignore it. */
break;
case 2: /* TimerControl */
if (s->control & TIMER_CTRL_ENABLE) {
/* Pause the timer if it is running. This may cause some
inaccuracy dure to rounding, but avoids a whole lot of other
messyness. */
ptimer_stop(s->timer);
}
s->control = value;
freq = s->freq;
/* ??? Need to recalculate expiry time after changing divisor. */
switch ((value >> 2) & 3) {
case 1: freq >>= 4; break;
case 2: freq >>= 8; break;
}
arm_timer_recalibrate(s, 0);
ptimer_set_freq(s->timer, freq);
if (s->control & TIMER_CTRL_ENABLE) {
/* Restart the timer if still enabled. */
ptimer_run(s->timer, (s->control & TIMER_CTRL_ONESHOT) != 0);
}
break;
case 3: /* TimerIntClr */
s->int_level = 0;
break;
case 6: /* TimerBGLoad */
s->limit = value;
arm_timer_recalibrate(s, 0);
break;
default:
cpu_abort (cpu_single_env, "arm_timer_write: Bad offset %x\n",
(int)offset);
}
arm_timer_update(s);
}
开发者ID:CPFL,项目名称:gxen,代码行数:49,代码来源:arm_timer.c
示例8: float_comp_to_cc
static inline int float_comp_to_cc(CPUS390XState *env, int float_compare)
{
switch (float_compare) {
case float_relation_equal:
return 0;
case float_relation_less:
return 1;
case float_relation_greater:
return 2;
case float_relation_unordered:
return 3;
default:
cpu_abort(env, "unknown return value for float compare\n");
}
}
开发者ID:frenchleaf,项目名称:qemu,代码行数:15,代码来源:fpu_helper.c
示例9: goldfish_sensor_write
static void goldfish_sensor_write(void *opaque, target_phys_addr_t offset, uint32_t val)
{
struct goldfish_sensor_state *s = opaque;
offset -= s->dev.base;
switch(offset) {
case INT_ENABLE:
/* enable interrupts */
s->int_enable = val;
break;
default:
cpu_abort (cpu_single_env, "goldfish_sensor_write: Bad offset %x\n", offset);
}
}
开发者ID:a159736,项目名称:qemu,代码行数:15,代码来源:goldfish_sensors.c
示例10: goldfish_battery_write
static void goldfish_battery_write(void *opaque, target_phys_addr_t offset, uint32_t val)
{
GoldfishBatteryDevice *s = (GoldfishBatteryDevice *)opaque;
switch(offset) {
case BATTERY_INT_ENABLE:
/* enable interrupts */
s->int_enable = val;
// s->int_status = (AUDIO_INT_WRITE_BUFFER_1_EMPTY | AUDIO_INT_WRITE_BUFFER_2_EMPTY);
// goldfish_device_set_irq(&s->dev, 0, (s->int_status & s->int_enable));
break;
default:
cpu_abort (cpu_single_env, "goldfish_audio_write: Bad offset %x\n", offset);
}
}
开发者ID:3a9LL,项目名称:panda,代码行数:16,代码来源:goldfish_battery.c
示例11: pl031_write
static void pl031_write(void * opaque, target_phys_addr_t offset,
uint32_t value)
{
pl031_state *s = (pl031_state *)opaque;
offset -= s->base;
switch (offset) {
case RTC_LR:
s->tick_offset += value - pl031_get_count(s);
pl031_set_alarm(s);
break;
case RTC_MR:
s->mr = value;
pl031_set_alarm(s);
break;
case RTC_IMSC:
s->im = value & 1;
DPRINTF("Interrupt mask %d\n", s->im);
pl031_update(s);
break;
case RTC_ICR:
/* The PL031 documentation (DDI0224B) states that the interupt is
cleared when bit 0 of the written value is set. However the
arm926e documentation (DDI0287B) states that the interrupt is
cleared when any value is written. */
DPRINTF("Interrupt cleared");
s->is = 0;
pl031_update(s);
break;
case RTC_CR:
/* Written value is ignored. */
break;
case RTC_DR:
case RTC_MIS:
case RTC_RIS:
fprintf(stderr, "qemu: pl031_write: Unexpected offset 0x%x\n",
(int)offset);
break;
default:
cpu_abort(cpu_single_env, "pl031_write: Bad offset 0x%x\n",
(int)offset);
break;
}
}
开发者ID:AmesianX,项目名称:winkvm,代码行数:47,代码来源:pl031.c
示例12: syborg_keyboard_write
static void syborg_keyboard_write(void *opaque, target_phys_addr_t offset,
uint32_t value)
{
SyborgKeyboardState *s = (SyborgKeyboardState *)opaque;
DPRINTF("reg write %d\n", (int)offset);
offset &= 0xfff;
switch (offset >> 2) {
case KBD_INT_ENABLE:
s->int_enabled = value;
syborg_keyboard_update(s);
break;
default:
cpu_abort(cpu_single_env, "syborg_keyboard_write: Bad offset %x\n",
(int)offset);
}
}
开发者ID:16aug,项目名称:nvmeqemu,代码行数:17,代码来源:syborg_keyboard.c
示例13: nand_dev_read
/* I/O read */
static uint32_t nand_dev_read(void *opaque, target_phys_addr_t offset)
{
nand_dev_controller_state *s = (nand_dev_controller_state *)opaque;
nand_dev *dev;
switch (offset) {
case NAND_VERSION:
return NAND_VERSION_CURRENT;
case NAND_NUM_DEV:
return nand_dev_count;
case NAND_RESULT:
return s->result;
}
if(s->dev >= nand_dev_count)
return 0;
dev = nand_devs + s->dev;
switch (offset) {
case NAND_DEV_FLAGS:
return dev->flags;
case NAND_DEV_NAME_LEN:
return dev->devname_len;
case NAND_DEV_PAGE_SIZE:
return dev->page_size;
case NAND_DEV_EXTRA_SIZE:
return dev->extra_size;
case NAND_DEV_ERASE_SIZE:
return dev->erase_size;
case NAND_DEV_SIZE_LOW:
return (uint32_t)dev->max_size;
case NAND_DEV_SIZE_HIGH:
return (uint32_t)(dev->max_size >> 32);
default:
cpu_abort(cpu_single_env, "nand_dev_read: Bad offset %x\n", offset);
return 0;
}
}
开发者ID:0-14N,项目名称:NDroid,代码行数:47,代码来源:goldfish_nand.c
示例14: syborg_rtc_read
static uint32_t syborg_rtc_read(void *opaque, target_phys_addr_t offset)
{
SyborgRTCState *s = (SyborgRTCState *)opaque;
offset &= 0xfff;
switch (offset >> 2) {
case RTC_ID:
return SYBORG_ID_RTC;
case RTC_DATA_LOW:
return (uint32_t)s->data;
case RTC_DATA_HIGH:
return (uint32_t)(s->data >> 32);
default:
cpu_abort(cpu_single_env, "syborg_rtc_read: Bad offset %x\n",
(int)offset);
return 0;
}
}
开发者ID:TheLoneRanger14,项目名称:vmxray,代码行数:17,代码来源:syborg_rtc.c
示例15: goldfish_battery_write
static void goldfish_battery_write(void *opaque, hwaddr offset, uint32_t val)
{
struct goldfish_battery_state *s = opaque;
switch(offset) {
case BATTERY_INT_ENABLE:
/* enable interrupts */
s->int_enable = val;
// s->int_status = (AUDIO_INT_WRITE_BUFFER_1_EMPTY | AUDIO_INT_WRITE_BUFFER_2_EMPTY);
// goldfish_device_set_irq(&s->dev, 0, (s->int_status & s->int_enable));
break;
default:
cpu_abort(cpu_single_env,
"goldfish_audio_write: Bad offset %" HWADDR_PRIx "\n",
offset);
}
}
开发者ID:Acidburn0zzz,项目名称:platform_external_qemu,代码行数:18,代码来源:battery.c
示例16: HELPER
void HELPER(movec)(CPUM68KState *env, uint32_t reg, uint32_t val)
{
switch (reg) {
case 0x02: /* CACR */
env->cacr = val;
m68k_switch_sp(env);
break;
case 0x04: case 0x05: case 0x06: case 0x07: /* ACR[0-3] */
/* TODO: Implement Access Control Registers. */
break;
case 0x801: /* VBR */
env->vbr = val;
break;
/* TODO: Implement control registers. */
default:
cpu_abort(env, "Unimplemented control register write 0x%x = 0x%x\n",
reg, val);
}
}
开发者ID:dsqmoore,项目名称:qemu-1,代码行数:19,代码来源:helper.c
示例17: pl022_read
static uint32_t pl022_read(void *opaque, target_phys_addr_t offset)
{
pl022_state *s = (pl022_state *)opaque;
int val;
offset -= s->base;
if (offset >= 0xfe0 && offset < 0x1000) {
return pl022_id[(offset - 0xfe0) >> 2];
}
switch (offset) {
case 0x00: /* CR0 */
return s->cr0;
case 0x04: /* CR1 */
return s->cr1;
case 0x08: /* DR */
if (s->rx_fifo_len) {
val = s->rx_fifo[(s->rx_fifo_head - s->rx_fifo_len) & 7];
DPRINTF("RX %02x\n", val);
s->rx_fifo_len--;
pl022_xfer(s);
} else {
val = 0;
}
return val;
case 0x0c: /* SR */
return s->sr;
case 0x10: /* CPSR */
return s->cpsr;
case 0x14: /* IMSC */
return s->im;
case 0x18: /* RIS */
return s->is;
case 0x1c: /* MIS */
return s->im & s->is;
case 0x20: /* DMACR */
/* Not implemented. */
return 0;
default:
cpu_abort (cpu_single_env, "pl022_read: Bad offset %x\n",
(int)offset);
return 0;
}
}
开发者ID:AmesianX,项目名称:winkvm,代码行数:43,代码来源:pl022.c
示例18: openrisc_cpu_do_interrupt
void openrisc_cpu_do_interrupt(CPUState *cs)
{
#ifndef CONFIG_USER_ONLY
OpenRISCCPU *cpu = OPENRISC_CPU(cs);
CPUOpenRISCState *env = &cpu->env;
env->epcr = env->pc;
if (env->flags & D_FLAG) {
env->flags &= ~D_FLAG;
env->sr |= SR_DSX;
env->epcr -= 4;
}
if (cs->exception_index == EXCP_SYSCALL) {
env->epcr += 4;
}
/* For machine-state changed between user-mode and supervisor mode,
we need flush TLB when we enter&exit EXCP. */
tlb_flush(cs, 1);
env->esr = env->sr;
env->sr &= ~SR_DME;
env->sr &= ~SR_IME;
env->sr |= SR_SM;
env->sr &= ~SR_IEE;
env->sr &= ~SR_TEE;
env->tlb->cpu_openrisc_map_address_data = &cpu_openrisc_get_phys_nommu;
env->tlb->cpu_openrisc_map_address_code = &cpu_openrisc_get_phys_nommu;
if (cs->exception_index > 0 && cs->exception_index < EXCP_NR) {
#ifdef OR32_ARCH_DEFAULT
env->pc = (cs->exception_index << 8);
#else
env->pc = 0x100000 + (cs->exception_index << 8);
#endif
//printf("pc = 0x%x\n", env->pc);
} else {
cpu_abort(cs, "Unhandled exception 0x%x\n", cs->exception_index);
}
#endif
cs->exception_index = -1;
}
开发者ID:curtiszimmerman,项目名称:orp,代码行数:43,代码来源:interrupt.c
示例19: syborg_int_write
static void syborg_int_write(void *opaque, hwaddr offset,
uint64_t value, unsigned size)
{
SyborgIntState *s = (SyborgIntState *)opaque;
int i;
offset &= 0xfff;
DPRINTF("syborg_int_write offset=%d val=%d\n", (int)offset, (int)value);
switch (offset >> 2) {
case INT_DISABLE_ALL:
s->pending_count = 0;
for (i = 0; i < s->num_irqs; i++)
s->flags[i].enabled = 0;
break;
case INT_DISABLE:
if (value >= s->num_irqs)
break;
if (s->flags[value].enabled) {
if (s->flags[value].enabled)
s->pending_count--;
s->flags[value].enabled = 0;
}
break;
case INT_ENABLE:
if (value >= s->num_irqs)
break;
if (!(s->flags[value].enabled)) {
if(s->flags[value].level)
s->pending_count++;
s->flags[value].enabled = 1;
}
break;
default:
cpu_abort(cpu_single_env, "syborg_int_write: Bad offset %x\n",
(int)offset);
return;
}
syborg_int_update(s);
}
开发者ID:stweil,项目名称:qemu,代码行数:42,代码来源:syborg_interrupt.c
示例20: trace_dev_read
/* I/O read */
static uint32_t trace_dev_read(void *opaque, hwaddr offset)
{
trace_dev_state *s = (trace_dev_state *)opaque;
(void)s;
switch (offset >> 2) {
case TRACE_DEV_REG_ENABLE: // tracing enable
return tracing;
default:
if (offset < 4096) {
cpu_abort(cpu_single_env, "trace_dev_read: Bad offset %x\n", offset);
} else {
D("%s: offset=%d (0x%x)\n", __FUNCTION__, offset, offset);
}
return 0;
}
return 0;
}
开发者ID:ecit241,项目名称:qemu-android,代码行数:21,代码来源:trace.c
注:本文中的cpu_abort函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论