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

📄 exception.cc

📁 nachos test nachos 有关实验
💻 CC
字号:
// exception.cc //	Entry point into the Nachos kernel from user programs.//	There are two kinds of things that can cause control to//	transfer back to here from user code:////	syscall -- The user code explicitly requests to call a procedure//	in the Nachos kernel.  Right now, the only function we support is//	"Halt".////	exceptions -- The user code does something that the CPU can't handle.//	For instance, accessing memory that doesn't exist, arithmetic errors,//	etc.  ////	Interrupts (which can also cause control to transfer from user//	code into the Nachos kernel) are handled elsewhere.//// For now, this only handles the Halt() system call.// Everything else core dumps.//// Copyright (c) 1992-1993 The Regents of the University of California.// All rights reserved.  See copyright.h for copyright notice and limitation // of liability and disclaimer of warranty provisions.#include "copyright.h"#include "system.h"#include "syscall.h"//----------------------------------------------------------------------// ExceptionHandler// 	Entry point into the Nachos kernel.  Called when a user program//	is executing, and either does a syscall, or generates an addressing//	or arithmetic exception.//// 	For system calls, the following is the calling convention://// 	system call code -- r2//		arg1 -- r4//		arg2 -- r5//		arg3 -- r6//		arg4 -- r7////	The result of the system call, if any, must be put back into r2. //// And don't forget to increment the pc before returning. (Or else you'll// loop making the same system call forever!////	"which" is the kind of exception.  The list of possible exceptions //	are in machine.h.//----------------------------------------------------------------------voidExceptionHandler(ExceptionType which){    int type = machine->ReadRegister(2);    if ((which == SyscallException) && (type == SC_Halt)) {	DEBUG('a', "Shutdown, initiated by user program.\n");   	interrupt->Halt();    } else {	printf("Unexpected user mode exception %d %d\n", which, type);	ASSERT(FALSE);    }}

⌨️ 快捷键说明

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