OSDN Git Service

svn rev.329より移動。
[chnosproject/CHNOSProject.git] / CHNOSProject / chnos / tolset_chn_000 / chnos_010 / chnos / xception.c
diff --git a/CHNOSProject/chnos/tolset_chn_000/chnos_010/chnos/xception.c b/CHNOSProject/chnos/tolset_chn_000/chnos_010/chnos/xception.c
new file mode 100644 (file)
index 0000000..46e88af
--- /dev/null
@@ -0,0 +1,194 @@
+\r
+#include "core.h"\r
+\r
+void CPU_ExceptionHandler00(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_00, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler01(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_01, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler02(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_02, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler03(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_03, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler04(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_04, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler05(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_05, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler06(uint *esp)\r
+{\r
+       IO_CallBIOSControl *callbios;\r
+\r
+       callbios = System_CallBIOS_Get_Controller();\r
+/*Invalid Opcode Exception*/\r
+       if(System_MultiTask_GetNowTask() == callbios->CallBIOS_Task){   /*\82à\82µ\81A\97á\8aO\82ð\8bN\82±\82µ\82½\83^\83X\83N\82ªCallBIOS\82¾\82Á\82½\82ç*/\r
+               #ifdef CHNOSPROJECT_DEBUG_CALLBIOS\r
+                       debug("Exception_0x06:UD2 Opcode Found in v8086mode.\n");\r
+               #endif\r
+               callbios->retvalue.eip = esp[0x0a];\r
+               callbios->retvalue.eax = esp[0x07];\r
+               callbios->retvalue.ecx = esp[0x06];\r
+               callbios->retvalue.edx = esp[0x05];\r
+               callbios->retvalue.ebx = esp[0x04];\r
+               callbios->retvalue.esp = esp[0x03];\r
+               callbios->retvalue.ebp = esp[0x02];\r
+               callbios->retvalue.esi = esp[0x01];\r
+               callbios->retvalue.edi = esp[0x00];\r
+               callbios->retvalue.es = esp[0x09];\r
+               callbios->retvalue.cs = esp[0x0b];\r
+               callbios->retvalue.ss = esp[0x0e];\r
+               callbios->retvalue.ds = esp[0x08];\r
+               callbios->retvalue.eflags.eflags = esp[0x0c];\r
+\r
+               System_CallBIOS_Send_End_Of_Operation(False);\r
+               System_MultiTask_Task_Kill(System_MultiTask_GetNowTask());\r
+       } else{\r
+               Error_Report(ERROR_CPU_EXCEPTION_06, esp);\r
+       }\r
+}\r
+\r
+void CPU_ExceptionHandler07(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_07, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler08(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_08, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler09(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_09, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler0a(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_0A, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler0b(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_0B, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler0c(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_0C, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler0d(uint *esp)\r
+{\r
+/*General Protection Exception*/\r
+       if(System_MultiTask_GetNowTask() != System_CallBIOS_Get_Controller()->CallBIOS_Task){   /*\82à\82µ\81A\97á\8aO\82ð\8bN\82±\82µ\82½\83^\83X\83N\82ªCallBIOS\82¾\82Á\82½\82ç*/\r
+               Error_Report(ERROR_CPU_EXCEPTION_0D, esp);\r
+       }\r
+       CallBIOS_Check_Privileged_Operation(esp);\r
+       return;\r
+}\r
+\r
+void CPU_ExceptionHandler0e(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_0E, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler0f(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_0F, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler10(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_10, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler11(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_11, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler12(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_12, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler13(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_13, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler14(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_14, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler15(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_15, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler16(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_16, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler17(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_17, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler18(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_18, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler19(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_19, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler1a(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_1A, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler1b(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_1B, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler1c(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_1C, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler1d(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_1D, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler1e(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_1E, esp);\r
+}\r
+\r
+void CPU_ExceptionHandler1f(uint *esp)\r
+{\r
+       Error_Report(ERROR_CPU_EXCEPTION_1F, esp);\r
+}\r