2282 |
n = s->req_nb_sectors; |
n = s->req_nb_sectors; |
2283 |
ide_transfer_start(s, 512 * n, ide_sector_write); |
ide_transfer_start(s, 512 * n, ide_sector_write); |
2284 |
break; |
break; |
2285 |
|
case WIN_READ_NATIVE_MAX: |
2286 |
|
ide_set_sector(s, s->nb_sectors - 1); |
2287 |
|
s->status = READY_STAT; |
2288 |
|
ide_set_irq(s); |
2289 |
|
break; |
2290 |
default: |
default: |
2291 |
abort_cmd: |
abort_cmd: |
2292 |
ide_abort_command(s); |
ide_abort_command(s); |
2455 |
} |
} |
2456 |
|
|
2457 |
/***********************************************************/ |
/***********************************************************/ |
2458 |
|
/* simulate reset (stop qemu) */ |
2459 |
|
|
2460 |
|
int reset_requested; |
2461 |
|
|
2462 |
|
uint32_t kbd_read_status(CPUX86State *env, uint32_t addr) |
2463 |
|
{ |
2464 |
|
return 0; |
2465 |
|
} |
2466 |
|
|
2467 |
|
void kbd_write_command(CPUX86State *env, uint32_t addr, uint32_t val) |
2468 |
|
{ |
2469 |
|
switch(val) { |
2470 |
|
case 0xfe: |
2471 |
|
reset_requested = 1; |
2472 |
|
cpu_x86_interrupt(global_env, CPU_INTERRUPT_EXIT); |
2473 |
|
break; |
2474 |
|
default: |
2475 |
|
break; |
2476 |
|
} |
2477 |
|
} |
2478 |
|
|
2479 |
|
void kbd_init(void) |
2480 |
|
{ |
2481 |
|
register_ioport_read(0x64, 1, kbd_read_status, 1); |
2482 |
|
register_ioport_write(0x64, 1, kbd_write_command, 1); |
2483 |
|
} |
2484 |
|
|
2485 |
|
/***********************************************************/ |
2486 |
/* cpu signal handler */ |
/* cpu signal handler */ |
2487 |
static void host_segv_handler(int host_signum, siginfo_t *info, |
static void host_segv_handler(int host_signum, siginfo_t *info, |
2488 |
void *puc) |
void *puc) |
2530 |
for(;;) { |
for(;;) { |
2531 |
|
|
2532 |
ret = cpu_x86_exec(env); |
ret = cpu_x86_exec(env); |
2533 |
|
if (reset_requested) |
2534 |
|
break; |
2535 |
|
|
2536 |
/* if hlt instruction, we wait until the next IRQ */ |
/* if hlt instruction, we wait until the next IRQ */ |
2537 |
if (ret == EXCP_HLT) |
if (ret == EXCP_HLT) |
2538 |
timeout = 10; |
timeout = 10; |
2802 |
serial_init(); |
serial_init(); |
2803 |
ne2000_init(); |
ne2000_init(); |
2804 |
ide_init(); |
ide_init(); |
2805 |
|
kbd_init(); |
2806 |
|
|
2807 |
/* setup cpu signal handlers for MMU / self modifying code handling */ |
/* setup cpu signal handlers for MMU / self modifying code handling */ |
2808 |
sigfillset(&act.sa_mask); |
sigfillset(&act.sa_mask); |