解决NetBSD-1.0在VMware 11.0上重启时报指令错误的问题

NetBSD-1.0 在 VMware 11.0 上重启时,总是会提示如下的错误:

但是NetBSD-1.3 在 VMware 11.0 上重启的时候并没有提示这个问题,所以参照 NetBSD-1.3 的重启代码,修改 NetBSD-1.0 的重启方式。

1) arch/i386/isa/ic/i8042.h 头文件增加宏定义:

#define     KBC_PULSE0    0xfe    /* pulse output bit 0 */
#define     KBC_PULSE1    0xfd    /* pulse output bit 1 */
#define     KBC_PULSE2    0xfb    /* pulse output bit 2 */
#define     KBC_PULSE3    0xf7    /* pulse output bit 3 */

2) 修改 arch/i386/i386/vm_machdep.c 的 cpu_reset 函数为:

extern    struct gate_descriptor idt[];

cpu_reset()
{
    struct region_descriptor region;

    disable_intr();

    /*
     * The keyboard controller has 4 random output pins, one of which is
     * connected to the RESET pin on the CPU in many PCs.  We tell the
     * keyboard controller to pulse this line a couple of times.
     */
    outb(KBCMDP, KBC_PULSE0);
    delay(100000);
    outb(KBCMDP, KBC_PULSE0);
    delay(100000);

    /*
     * Try to cause a triple fault and watchdog reset by making the IDT
     * invalid and causing a fault.
     */
    bzero((caddr_t)idt, NIDT * sizeof(idt[0]));
    /* setregion(&region, idt, NIDT * sizeof(idt[0]) - 1); */

    region.rd_limit = (int)( NIDT * sizeof(idt[0]) - 1 );
    region.rd_base  = (int)idt;

    lidt(&region);
    __asm __volatile("divl %0,%1" : : "q" (0), "a" (0)); 

#if 0
    /*
     * Try to cause a triple fault and watchdog reset by unmapping the
     * entire address space and doing a TLB flush.
     */
    bzero((caddr_t)PTD, NBPG);
    pmap_update();
#endif

    for (;;);
}

在文件开头处还需要加上两个头文件:

#include <machine/pio.h>
#include <i386/isa/ic/i8042.h>

pio.h 定义了 outb , i8042.h 定义了 KBCMDP 和 KBC_PULSE0.

重新编译内核并更新之后,reboot 就不会再提示之前的错误了。

时间: 2024-10-11 07:43:07

解决NetBSD-1.0在VMware 11.0上重启时报指令错误的问题的相关文章

用VMware 11.0虚拟机安装Win8 系统失败,提示“shsucdx can&#39;t install”

研究了好久,网上那些更改bios的方法根本行不通,因为该版本的biso根本没有SATA选项!解决方法很简单,如下图: 重启虚拟机即可. 用VMware 11.0虚拟机安装Win8 系统失败,提示"shsucdx can't install"

VMware 11.0 简体中文版|附永久密钥

昨天,VMware虚拟机11.0 简体中文版正式发布,值得注意的是新版抛弃了32位系统支持,安装包体积大幅减小, 新增Windows 10 技术预览版支持,不过依然不完美(比如9879安装上后严重崩溃),引导虚拟机现已支持EFI:另外,Win8.1虚拟机Unity已改进,最多已为虚拟机分配2GB显存. VMware Workstation 是功能最强大的热门虚拟机软件,现已自带原生简体中文.用户可在在虚拟机同时运行各种操作系统,进行开发.测试.演示和部署软件,虚拟机中复制服务器.台式机和平板环境

将websever从10.0移植到11.0中基本步骤

将websever从10.0移植到11.0中基本步骤: 1.用11.0打开原10.0工程文件,然后打开SOPC Builder工具,重新生成nios系统(这一步很重要):然后回到quartus工程中重新编译硬件系统,最后将.sof下载到开发板. 2.启动nios SBT(win7系统中需要以管理员身份启动),设置工作区目录:然后新建一个web sever模板应用工程和bsp工程,将原软件中的.c和.h文件拷贝到新的软件中,然后编译软件工程. 3.将硬件系统.sof下载到开发板(如果在第一步中已下

VMware Workstation 11.0.0多国语言(含简体中文)+永久激活密钥

 昨 天,VMware虚拟机11.0 简体中文版正式发布,值得注意的是新版抛弃了32位系统支持,安装包体积大幅减小, 新增Windows10技术预览版支持,不过依然不完美(比如9879安装上后严重崩溃),引导虚拟机现已支持EFI:另外,Win8.1虚拟机 Unity已改进,最多已为虚拟机分配2GB显存. VMware Workstation是功能最强大的热门虚拟机软件,现已自带原生简体中文.用户可在在虚拟机同时运行各种操作系统,进行开发.测试.演示和部署软件,虚拟机中复制服务器.台式机和平板环境

VMware Workstation11.0安装Mac OS X 10.10最完整指南(包含所需所有资源下载)

前言说明:最近换了新的电脑,配置好很多了,想装下虚拟机来玩下IOS,其中也遇到了几个大坑,现在刚完全装好,把所有步骤以及资源整合到一处,后面的朋友可以避免浪费很多无谓的百度时间. ""我先把使用到的程序以及版本说明下,因为这非常总要,使用虚拟机安装mac,其实就是装黑苹果,这要依赖很多破解工具,但这些工具都是有版本支持的.我这些版本装的没问题,但是你如果下载网上其他版本,我就不能确保一定没问题了,只能是自己试了."" VMware 11.0 永久不过期激活密钥 1F

关于VMware 11 虚拟机不能通过DCHP获取到地址的解决办法

首先来说一下机器环境: 1.win7刚升级win10 2.VMware 版本为11.0 3.安装的虚拟机系统为 RHEL 7.0 X64位 碰到的问题: 1.刚安装的RHEL7.0系统在NAT模式下不能正常的通过DHCP获取到IP地址 2.虚拟机在手动配置IP地址后,能通过主机CMD程序ping通虚拟机,但虚拟机不能ping                          通主机 经过在百度上努力的探寻,各种版本的对比.测试最后发现是本地服务的问题! 如上图我发现我的系统居然前面三个服务没有,

VMware Workstation 11.0.0 下载和激活

近日,VMware Workstation版本又一次升级,带来了VMware Workstation 11.0.0的新版本,下面简单的介绍下新版本. 关于新版本的介绍:http://www.vmware.com/products/workstation/ 特性1:Leading Edge PC Virtualization 特性2:State of the Art Desktop Virtualization for Windows and Linux 特性3:Create Powerful V

关于在win8系统下用VMware 9.0装系统导致物理机不断重启的解决办法

一.问题描述 前段时间将操作系统换成了Win8,安装上VMware 9.0英文版.然后在VMware中安装centos系统,结果每次到安装系统的时候,物理机系统就会莫名其妙地自动重启,毫无征兆地出现,测试几次都是如此.在虚拟机中安装操作系统会导致物理机系统自动重启,这个问题还是头一次遇到,万般无奈之下,我从朋友那边拷贝已经安装好的系统过来用,结果在使用VMware打开已经安装好的系统时,也依然会导致我的电脑重启,这个问题一直困扰了我好久,今天在网上看到到了一篇文章http://blog.csdn

VMware workstation 11.0.0 新功能及下载地址

近日虚拟机软件VMware Workstation 11.0.0 正式版发布 ,具体版本号为Build 2305329.VMware Workstation可以帮助用户在一台机器上同时运行两个或更多Windows.DOS.LINUX系统,并进行开发.测试.部署新的应用程序. 下载地址: VMware workstation 11.0.0 链接:http://pan.baidu.com/s/1pJ3EfxT 密码:ua0s VMware Workstation 11.0.0 正式版新增功能如下: