/[qemu]/qemu/vl.c
ViewVC logotype

Diff of /qemu/vl.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.10 by bellard, Tue Jul 1 16:27:45 2003 UTC revision 1.11 by bellard, Fri Jul 4 14:38:25 2003 UTC
# Line 2282  void ide_ioport_write(CPUX86State *env, Line 2282  void ide_ioport_write(CPUX86State *env,
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);
# Line 2450  void ide_init(void) Line 2455  void ide_init(void)
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)
# Line 2497  void main_loop(void *opaque) Line 2530  void main_loop(void *opaque)
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;
# Line 2767  int main(int argc, char **argv) Line 2802  int main(int argc, char **argv)
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);

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26