@@ -67,23 +67,26 @@ int main(void)
6767 /* Repeatedly run code and handle VM exits. */
6868 while (1 ) {
6969 vmm_cpu_run ();
70- switch (run -> exit_reason ) {
71- case KVM_EXIT_HLT :
70+ uint64_t exit_reason ;
71+ vmm_get (VMM_CTRL_EXIT_REASON , & exit_reason );
72+ switch (exit_reason ) {
73+ case VMM_EXIT_HLT :
7274 puts ("KVM_EXIT_HLT" );
7375 return 0 ;
74- case KVM_EXIT_IO :
75- if (run -> io .direction == KVM_EXIT_IO_OUT && run -> io .size == 1 && run -> io .port == 0x3f8 && run -> io .count == 1 )
76- putchar (* (((char * )run ) + run -> io .data_offset ));
77- else
78- errx (1 , "unhandled KVM_EXIT_IO" );
79- break ;
80- case KVM_EXIT_FAIL_ENTRY :
81- errx (1 , "KVM_EXIT_FAIL_ENTRY: hardware_entry_failure_reason = 0x%llx" ,
82- (unsigned long long )run -> fail_entry .hardware_entry_failure_reason );
83- case KVM_EXIT_INTERNAL_ERROR :
84- errx (1 , "KVM_EXIT_INTERNAL_ERROR: suberror = 0x%x" , run -> internal .suberror );
76+ /* case KVM_EXIT_IO: */
77+ /* if (run->io.direction == KVM_EXIT_IO_OUT && run->io.size == 1 && run->io.port == 0x3f8 && run->io.count == 1) */
78+ /* putchar(*(((char *)run) + run->io.data_offset)); */
79+ /* else */
80+ /* errx(1, "unhandled KVM_EXIT_IO"); */
81+ /* break; */
82+ /* case KVM_EXIT_FAIL_ENTRY: */
83+ /* errx(1, "KVM_EXIT_FAIL_ENTRY: hardware_entry_failure_reason = 0x%llx", */
84+ /* (unsigned long long)run->fail_entry.hardware_entry_failure_reason); */
85+ /* case KVM_EXIT_INTERNAL_ERROR: */
86+ /* errx(1, "KVM_EXIT_INTERNAL_ERROR: suberror = 0x%x", run->internal.suberror); */
8587 default :
86- errx (1 , "exit_reason = 0x%x" , run -> exit_reason );
88+ fprintf (stderr , "exit_reason = 0x%x" , exit_reason );
89+ abort ();
8790 }
8891 }
8992}
0 commit comments