⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 faultalpha.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include	"u.h"#include	"../port/lib.h"#include	"mem.h"#include	"dat.h"#include	"fns.h"#include	"ureg.h"#include	"../port/error.h"/* *  find out fault address and type of access. *  Call common fault handler. */voidfaultalpha(Ureg *ur){	ulong addr, cause;	int read, user;	char buf[ERRMAX];	uvlong x;	x = ur->a0&0xffffffff80000000LL;	if (x != 0LL && x != 0xffffffff80000000LL)		iprint("faultalpha bad addr %llux pc %llux\n", ur->a0, ur->pc);	addr = (ulong)ur->a0;	cause = (ulong)ur->a2;	addr &= ~(BY2PG-1);	read = (cause !=1);	user = (ulong)ur->status&UMODE;/*	print("fault %s pc=0x%lux addr=0x%lux 0x%lux\n",		read? (cause != 0) ? "ifetch" : "read" : "write", (ulong)ur->pc, addr, (ulong)ur->a1); /**/	if(fault(addr, read) == 0)		return;	if(user){		sprint(buf, "sys: trap: fault %s addr=0x%lux",			read? (cause != 0) ? "ifetch" : "read" : "write", (ulong)ur->a0);		postnote(up, 1, buf, NDebug);		return;	}	iprint("kernel %s vaddr=0x%lux\n", read? (cause != 0) ? "ifetch" : "read" : "write", (ulong)ur->a0);	if(0)		mmudump();	dumpregs(ur);	_dumpstack(ur);	exit(1);}/* * called in sysfile.c */voidevenaddr(ulong addr){	if(addr & 3){		postnote(up, 1, "sys: odd address", NDebug);		error(Ebadarg);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -