freebsd6的I386对微通道支持源代码
2009-05-13 03:09:41来源:未知 阅读 ()
#include
__FBSDID("$FreeBSD: src/sys/i386/bios/mca_machdep.c,v 1.9 2004/08/31 21:51:51 mdodd Exp $");
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
/* 全局微通道总线标志,0代表没有微通道,1代表有*/
int MCA_system = 0;
/* 由BIOS的15号C0字功能调用后返回的系统配置结构 */
struct sys_config {
u_int16_t count;
u_int8_t model;
u_int8_t submodel;
u_int8_t bios_rev;
u_int8_t feature;
#define FEATURE_MCAISA 0x01 /* 含有微通道和ISA总线*/
#define FEATURE_MCABUS 0x02 /* 含有微通道 */
#define FEATURE_EBDA 0x04 /* 扩充的BIOS数据区被分配*/
#define FEATURE_WAITEV 0x08 /* 支持扩充事件等待*/
#define FEATURE_KBDINT 0x10 /* INT 09H 中断为键盘*/
#define FEATURE_RTC 0x20 /* 实时钟存在*/
#define FEATURE_IC2 0x40 /* 第二中断芯片存在*/
#define FEATURE_DMA3 0x80 /* DMA 通道 3 由磁盘BIOS使用*/
u_int8_t pad[3];
} __packed;
/* 函数原形 */
static void bios_mcabus_present (void *);
SYSINIT(mca_present, SI_SUB_CPU, SI_ORDER_ANY, bios_mcabus_present, NULL);
/* Functions */
static void
bios_mcabus_present(void * dummy)
{
struct vm86frame vmf; /*CPU的寄存器结构,可以32位,16位,8位表示法.见/sys/i386/include/vm86.h*/
struct sys_config * scp;
vm_offset_t paddr;
bzero(&vmf, sizeof(struct vm86frame));/*分配一段内存(按字节方式,因为寄存器可描述到字节,即8位,如AH,AL等)*/
vmf.vmf_ah = 0xc0;/*准备BIOS中断调用,准备调用的AH寄存器对应结构成员放入C0,*/
if (vm86_intcall(0x15, &vmf)) {/*BIOS中断调用INT 15,我的中断大全丢了,没查到,看下文估计是PS/2鼠标?*/
/* bootverbose参数在init_main.c主程序中申明.意思是在启动时候是否打印出一些问题细节.文件的申明如下:
int bootverbose;
SYSCTL_INT(_debug, OID_AUTO, bootverbose, CTLFLAG_RW, &bootverbose, 0, "");
该变量位于debug节点下.可以用sysctl debug.bootverbose来显示,由于读写标记为CTLFLAG_RW,说明它可以设置的.
*/
if (bootverbose) {
printf("BIOS SDT: INT call failed.\n");
}
return;
}
if ((vmf.vmf_ah != 0) && (vmf.vmf_flags & 0x01)) {/*AH寄存器返回值为非0并且标志位的第一位置位,有错误*/
if (bootverbose) {
printf("BIOS SDT: Not supported. Not PS/2?\n");
printf("BIOS SDT: AH 0x%02x, Flags 0x%04x\n",
vmf.vmf_ah, vmf.vmf_flags);
}
return;
}
paddr = vmf.vmf_es;/*中断调用后返回数据在ES:BX中*/
paddr = (paddr model, scp->submodel, scp->bios_rev);
printf("BIOS SDT: features 0x%b\n", scp->feature,
"\20"
"\01MCA+ISA"
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- FreeBSD 7.2 发布 2009-05-13
- 最便宜的空间域名! 2014-11-11
- FreeBSD 7.2-RELEASE 正式命名 2009-05-13
- FreeBSD 7.2-RELEASE 发行说明(草稿)(ZZ) 2009-05-13
- 去掉X11 GUI支持提高VIM运行速度 2009-05-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash