bochs: ICW1:level sensitive mode not supported

最近在用bochs虚拟机写一些裸奔程序,做到时钟实验这部分时开启了定时器中断,一运行就提示:ICW1:level sensitive mode not supported.

google 了一下,从bochs的源代码上可以看出来:这种错误出现在:

View Code
 1 void bx_pic_c::write(Bit32u address, Bit32u value, unsigned io_len)

 2 {

 3         .........

 4         switch (address) {

 5            ......

 6            case 0x20: 

 7                   if (value & 0x08) {

 8                        BX_PANIC(("master: ICW1: level sensitive mode not supported"));

 9                   }

10             .....

11              case 0x80: 

12                   if (value & 0x08) {

13                        BX_PANIC(("master: ICW1: level sensitive mode not supported"));

14                   }

15             .....

16         }

17         ..............

18                     

19 }

 

View Code
从上述代码中可以看出,是往0x20 和 0xA0 端口写的值bit3(第四个位)为1 所导致的。所以我检查代码,果然发现在定时器的中断处理程序中,本来往OCW2中写入0x60,给CPU发送EOI,让我写成了60,即16进制的0x3c, bit3 为1,所以提示这个错误。

你可能感兴趣的:(level)