[已解决] Make bochs2.4.1出错

编译打包和其他
回复
头像
excalibur
帖子: 22
注册时间: 2009-05-30 19:19

[已解决] Make bochs2.4.1出错

#1

帖子 excalibur » 2009-06-15 12:47

make时的错误
proc_ctrl.cc:654: error: ‘CheckPDPTR’ was not declared in this scope
proc_ctrl.cc:668: error: ‘CheckPDPTR’ was not declared in this scope
make[1]: *** [proc_ctrl.o] Error 1

Google无果,还望哪位大哥指点一二
GCC版本gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3



自己解决:

代码: 全选

650行开始 
#if BX_SUPPORT_VMX 
      VMexit_CR3_Write(i, val_32); 
      if (BX_CPU_THIS_PTR cr0.get_PG() && BX_CPU_THIS_PTR cr4.get_PAE() && 
!long_mode()) { 
        if (! CheckPDPTR(val_32)) { 
          BX_ERROR(("SetCR3(): PDPTR check failed !")); 
          exception(BX_GP_EXCEPTION, 0, 0); 
        } 
      } 
      SetCR3(val_32); 
      BX_INSTR_TLB_CNTRL(BX_CPU_ID, BX_INSTR_MOV_CR3, val_32); 
      break; 
#endif 
#if BX_CPU_LEVEL > 3 
    case 4: // CR4 
#if BX_SUPPORT_VMX 
      val_32 = VMexit_CR4_Write(i, val_32); 
      if (BX_CPU_THIS_PTR cr0.get_PG() && (val_32 & (1<<5)) != 0 /* PAE */ 
&& !long_mode()) { 
        if (! CheckPDPTR(BX_CPU_THIS_PTR cr3)) { 
          BX_ERROR(("SetCR4(): PDPTR check failed !")); 
          exception(BX_GP_EXCEPTION, 0, 0); 
        } 
      } 
      // Protected mode: #GP(0) if attempt to write a 1 to 
      // any reserved bit of CR4 
      if (! SetCR4(val_32)) 
        exception(BX_GP_EXCEPTION, 0, 0); 
      break; 
#endif 
#endif 
    default: 
      BX_ERROR(("MOV_CdRd: #UD - control register %d index out of range", 
i->nnn())); 
      exception(BX_UD_EXCEPTION, 0, 0); 
  } 
} 

683结束 
哇吓吓吓吓...
moonese
帖子: 4
注册时间: 2007-04-15 23:10

Re: [已解决] Make bochs2.4.1出错

#2

帖子 moonese » 2009-07-11 9:24

多谢,贴个 diff 格式的,看变更清楚些
上次由 moonese 在 2009-07-11 9:50,总共编辑 1 次。
moonese
帖子: 4
注册时间: 2007-04-15 23:10

Re: [已解决] Make bochs2.4.1出错

#3

帖子 moonese » 2009-07-11 9:48

代码: 全选

@@ -649,7 +649,6 @@
     case 3: // CR3
 #if BX_SUPPORT_VMX
       VMexit_CR3_Write(i, val_32);
-#endif
       if (BX_CPU_THIS_PTR cr0.get_PG() && BX_CPU_THIS_PTR cr4.get_PAE() && !long_mode()) {
         if (! CheckPDPTR(val_32)) {
           BX_ERROR(("SetCR3(): PDPTR check failed !"));
@@ -659,11 +658,11 @@
       SetCR3(val_32);
       BX_INSTR_TLB_CNTRL(BX_CPU_ID, BX_INSTR_MOV_CR3, val_32);
       break;
+#endif
 #if BX_CPU_LEVEL > 3
     case 4: // CR4
 #if BX_SUPPORT_VMX
       val_32 = VMexit_CR4_Write(i, val_32);
-#endif
       if (BX_CPU_THIS_PTR cr0.get_PG() && (val_32 & (1<<5)) != 0 /* PAE */ && !long_mode()) {
         if (! CheckPDPTR(BX_CPU_THIS_PTR cr3)) {
           BX_ERROR(("SetCR4(): PDPTR check failed !"));
@@ -676,6 +675,7 @@
         exception(BX_GP_EXCEPTION, 0, 0);
       break;
 #endif
+#endif
     default:
       BX_ERROR(("MOV_CdRd: #UD - control register %d index out of range", i->nnn()));
       exception(BX_UD_EXCEPTION, 0, 0);
moonese
帖子: 4
注册时间: 2007-04-15 23:10

Re: [已解决] Make bochs2.4.1出错

#4

帖子 moonese » 2009-07-11 10:41

另外试了下最新的cvs snapshot,已经解决了,看代码略有不同
http://bochs.sourceforge.net/cvs-snapsh ... 704.tar.gz
头像
excalibur
帖子: 22
注册时间: 2009-05-30 19:19

Re: [已解决] Make bochs2.4.1出错

#5

帖子 excalibur » 2009-07-16 10:58

现在也明白了, 正式版有时候不如cvs/svn的版本...
哇吓吓吓吓...
yansheng1003
帖子: 83
注册时间: 2008-07-26 14:13

Re: [已解决] Make bochs2.4.1出错

#6

帖子 yansheng1003 » 2009-07-21 15:57

这个说啥子哦,看不懂
jingouwangzi
帖子: 11
注册时间: 2008-10-27 21:08

Re: [已解决] Make bochs2.4.1出错

#7

帖子 jingouwangzi » 2009-08-15 18:46

请问能不能解释一下这个是怎么搞的?上来就一堆代码我看不懂啊?
jingouwangzi
帖子: 11
注册时间: 2008-10-27 21:08

Re: [已解决] Make bochs2.4.1出错

#8

帖子 jingouwangzi » 2009-08-15 19:03

我又看明白了,问题已经解决了,谢谢啦
头像
widon1104
帖子: 839
注册时间: 2008-07-17 10:55

Re: [已解决] Make bochs2.4.1出错

#9

帖子 widon1104 » 2009-10-09 19:19

en,看一看
头像
Jarson
帖子: 2371
注册时间: 2008-07-21 9:44
来自: 深圳
联系:

Re: [已解决] Make bochs2.4.1出错

#10

帖子 Jarson » 2009-10-10 10:15

mark :em11
回复