OSDN Git Service

SimpleHTMLEditorを追加。
[chnosproject/CHNOSProject.git] / CHNOSProject / chnos / tolset_chn_000 / chnos_010 / chnos / error.c
diff --git a/CHNOSProject/chnos/tolset_chn_000/chnos_010/chnos/error.c b/CHNOSProject/chnos/tolset_chn_000/chnos_010/chnos/error.c
deleted file mode 100644 (file)
index b13beb2..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-\r
-#include "core.h"\r
-\r
-bool Error_Output_Enable_SerialPort = False;\r
-bool Error_Output_Enable_Display_TextMode = False;\r
-uint Error_Output_Enable_Display_GraphicMode = False;\r
-\r
-void *Error_Output_Display_GraphicMode_VRAM = 0;\r
-uint Error_Output_Display_GraphicMode_Lines = 0;\r
-uint Error_Output_Display_GraphicMode_ResolutionX = 0;\r
-uint Error_Output_Display_GraphicMode_UsedLines = 0;\r
-\r
-uchar *cpu_exceptions[0x20] = {\r
-       "Divided by zero.",\r
-       "Debug.",\r
-       "Nonmaskable interrupt.",\r
-       "Breakpoint.",\r
-       "Overflow.",\r
-       "Outside BOUND.",\r
-       "Invalid opcode.",\r
-       "Disable Device.",\r
-       "Double fault.",\r
-       "Coprocessor Segment Overrun.",\r
-       "Invalid task status segment.",\r
-       "Segment not present.",\r
-       "Stack Segment Fault.",\r
-       "General Protection Exception.",\r
-       "Page fault.",\r
-       "Reserved.",\r
-       "Floating point error.",\r
-       "Alignment Check.",\r
-       "Machine Check.",\r
-       "SIMD floating-point exception.",\r
-       "Reserved.",\r
-       "Reserved.",\r
-       "Reserved.",\r
-       "Reserved.",\r
-       "Reserved.",\r
-       "Reserved.",\r
-       "Reserved.",\r
-       "Reserved.",\r
-       "Reserved.",\r
-       "Reserved.",\r
-       "Reserved.",\r
-       "Reserved."\r
-};\r
-\r
-uchar *cpu_exception_infos[16] = {\r
-       "EDI      ",\r
-       "ESI      ",\r
-       "EBP      ",\r
-       "ESP      ",\r
-       "EBX      ",\r
-       "EDX      ",\r
-       "ECX      ",\r
-       "EAX      ",\r
-       "DS       ",\r
-       "ES       ",\r
-       "ERRORCODE",\r
-       "EIP      ",\r
-       "CS       ",\r
-       "EFLAGS   ",\r
-       "User ESP ",\r
-       "User SS  "\r
-};\r
-\r
-uint Error_Report(uint error_no, ...)\r
-{\r
-       uint *retaddr, *va_args;\r
-\r
-       retaddr = &error_no - 1;\r
-       va_args = &error_no + 1;\r
-\r
-       if(error_no <= ERROR_CPU_EXCEPTIONS){\r
-               #ifdef CHNOSPROJECT_DEBUG\r
-                       if(error_no == ERROR_CPU_EXCEPTION_01){\r
-                               Debug_ExceptionHandler((uint *)*va_args);\r
-                               return 0;\r
-                       }\r
-               #endif\r
-               Error_Put_String("Exception 0x%02X:%s", error_no, cpu_exceptions[error_no]);\r
-               if(error_no == ERROR_CPU_EXCEPTION_00){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_01){\r
-                               Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_02){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_03){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_04){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_05){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_06){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_07){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_08){\r
-                       Error_CPU_Exception_Put_Registers_With_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_09){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_0A){\r
-                       Error_CPU_Exception_Put_Registers_With_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_0B){\r
-                       Error_CPU_Exception_Put_Registers_With_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_0C){\r
-                       Error_CPU_Exception_Put_Registers_With_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_0D){\r
-                       Error_CPU_Exception_Put_Registers_With_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_0E){\r
-                       Error_CPU_Exception_Put_Registers_With_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_0F){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_10){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_11){\r
-                       Error_CPU_Exception_Put_Registers_With_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_12){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_13){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_14){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_15){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_16){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_17){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_18){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_19){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_1A){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_1B){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_1C){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_1D){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_1E){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               } else if(error_no == ERROR_CPU_EXCEPTION_1F){\r
-                       Error_CPU_Exception_Put_Registers_Without_ErrorCode((uint *)*va_args);\r
-               }\r
-               Error_Abort();\r
-       } else{\r
-               Error_Put_String("[0x%08X]Error:0x%08X ", *retaddr, error_no);\r
-               if(error_no == ERROR_NO_MORE_SEGMENT){\r
-                       Error_Put_String("No More Segment Descriptor(requested at 0x%08X).", *va_args);\r
-                       Error_Abort();\r
-               } else if(error_no == ERROR_NOT_ENOUGH_FREE_MEMORY){\r
-                       Error_Put_String("No More Free Memory(Control:0x%08X Request Size:0x%08X).", *va_args, *(va_args + 1));\r
-               } else if(error_no == ERROR_MEMORY_FREE_RANGE_OVERLAPPED){\r
-                       Error_Put_String("Memory Free Range Overlapped(Control:0x%08X TagIndex:%u).", *va_args, *(va_args + 1));\r
-               } else if(error_no == ERROR_NO_MORE_FREE_TAG){\r
-                       Error_Put_String("No More Free Tag(Control:0x%08X).", *va_args);\r
-               } else if(error_no == ERROR_INVALID_FREE_MEMORY_INDEX){\r
-                       Error_Put_String("Invalid Free Memory Index(Control:0x%08X TagIndex:%u).", *va_args, *(va_args + 1));\r
-               } else if(error_no == ERROR_FIFO_BUFFER_OVERFLOW){\r
-                       Error_Put_String("FIFO Buffer Overflow(FIFO:0x%08X).", *va_args);\r
-               } else{\r
-                       Error_Put_String("Unknown Error Number.");\r
-                       Error_Abort();\r
-               }\r
-       }\r
-       Error_Put_String("Continue.");\r
-       Error_Output_Display_GraphicMode_UsedLines = 0;\r
-       return 0;\r
-}\r
-\r
-void Error_Abort(void)\r
-{\r
-       Error_Put_String("Abort.");\r
-       IO_CLI();\r
-       for(;;){\r
-               IO_HLT();\r
-       }\r
-}\r
-\r
-void Error_Set_Enable_SerialPort(bool serial)\r
-{\r
-       Error_Output_Enable_SerialPort = serial;\r
-       return;\r
-}\r
-\r
-void Error_Set_Enable_Display_TextMode(bool tdisp)\r
-{\r
-       Error_Output_Enable_Display_TextMode = tdisp;\r
-       return;\r
-}\r
-\r
-void Error_Set_Enable_Display_GraphicMode(bool gdisp, void *vram, uint xsize, uint lines)\r
-{\r
-       Error_Output_Enable_Display_GraphicMode = gdisp;\r
-       Error_Output_Display_GraphicMode_VRAM = vram;\r
-       Error_Output_Display_GraphicMode_ResolutionX = xsize;\r
-       Error_Output_Display_GraphicMode_Lines = lines;\r
-       Error_Output_Display_GraphicMode_UsedLines = 0;\r
-       return;\r
-}\r
-\r
-int Error_Put_String(const uchar format[], ...)\r
-{\r
-       int i;\r
-       uchar s[256];\r
-\r
-       i = vsnprintf(s, sizeof(s), format, (uint *)(&format + 1));\r
-       if(Error_Output_Enable_Display_GraphicMode){\r
-               if(Error_Output_Display_GraphicMode_Lines > Error_Output_Display_GraphicMode_UsedLines){\r
-                       Drawing_Fill_Rectangle(Error_Output_Display_GraphicMode_VRAM, Error_Output_Display_GraphicMode_ResolutionX, 0xc6c6c6, 0, Error_Output_Display_GraphicMode_UsedLines << 4, Error_Output_Display_GraphicMode_ResolutionX - 1, (Error_Output_Display_GraphicMode_UsedLines << 4) + 16 - 1);\r
-                       Drawing_Put_String(Error_Output_Display_GraphicMode_VRAM, Error_Output_Display_GraphicMode_ResolutionX, 0, Error_Output_Display_GraphicMode_UsedLines << 4, 0xffffff, s);\r
-                       Error_Output_Display_GraphicMode_UsedLines++;\r
-               }\r
-       }\r
-       if(Error_Output_Enable_SerialPort){\r
-               SerialPort_Send(s);\r
-               SerialPort_Send("\n");\r
-       }\r
-       if(Error_Output_Enable_Display_TextMode){\r
-               TextMode_Put_String(s, white);\r
-               TextMode_Put_String("\n", white);\r
-       }\r
-       return i;\r
-}\r
-\r
-void Error_CPU_Exception_Put_Registers_With_ErrorCode(uint *esp)\r
-{\r
-       uint i;\r
-\r
-       IO_SegmentDescriptor *gdt;\r
-\r
-       gdt = (IO_SegmentDescriptor *)ADR_GDT;\r
-\r
-       Error_Put_String("#PUSHAD by _asm_CPU_ExceptionHandler");\r
-       for(i = 0; i < 4; i++){\r
-               Error_Put_String("%s:0x%08X %s:0x%08X", cpu_exception_infos[i << 1], esp[i << 1], cpu_exception_infos[(i << 1) + 1], esp[(i << 1) + 1]);\r
-       }\r
-\r
-       Error_Put_String("#PUSH by _asm_CPU_ExceptionHandler");\r
-       for(; i < 5; i++){\r
-               Error_Put_String("%s:0x%08X %s:0x%08X", cpu_exception_infos[i << 1], esp[i << 1], cpu_exception_infos[(i << 1) + 1], esp[(i << 1) + 1]);\r
-       }\r
-\r
-       Error_Put_String("#PUSH by CPU");\r
-       for(; i < 8; i++){\r
-               Error_Put_String("%s:0x%08X %s:0x%08X", cpu_exception_infos[i << 1], esp[i << 1], cpu_exception_infos[(i << 1) + 1], esp[(i << 1) + 1]);\r
-       }\r
-\r
-       Error_Put_String("#Control Registers");\r
-       Error_Put_String("CR0 = 0x%08X", Load_CR0());\r
-       Error_Put_String("CR2 = 0x%08X", Load_CR2());\r
-       Error_Put_String("CR3 = 0x%08X", Load_CR3());\r
-       Error_Put_String("CR4 = 0x%08X", Load_CR4());\r
-\r
-       Error_Put_String("Opcode[0x%X:0x%X]:0x%X", SegmentDescriptor_Get_Base(&gdt[esp[0x0c] >> 3]), esp[0x0b], ((uchar *)(SegmentDescriptor_Get_Base(&gdt[esp[0x0c] >> 3])))[esp[0x0b]]);\r
-       return;\r
-}\r
-\r
-void Error_CPU_Exception_Put_Registers_Without_ErrorCode(uint *esp)\r
-{\r
-       uint i;\r
-\r
-       IO_SegmentDescriptor *gdt;\r
-\r
-       gdt = (IO_SegmentDescriptor *)ADR_GDT;\r
-\r
-       Error_Put_String("#PUSHAD by _asm_CPU_ExceptionHandler");\r
-       for(i = 0; i < 4; i++){\r
-               Error_Put_String("%s:0x%08X %s:0x%08X", cpu_exception_infos[i << 1], esp[i << 1], cpu_exception_infos[(i << 1) + 1], esp[(i << 1) + 1]);\r
-       }\r
-\r
-       Error_Put_String("#PUSH by _asm_CPU_ExceptionHandler");\r
-       for(; i < 5; i++){\r
-               Error_Put_String("%s:0x%08X %s:0x%08X", cpu_exception_infos[i << 1], esp[i << 1], cpu_exception_infos[(i << 1) + 1], esp[(i << 1) + 1]);\r
-       }\r
-\r
-       Error_Put_String("#PUSH by CPU");\r
-       Error_Put_String("%s:0x%08X", cpu_exception_infos[(i << 1) + 1], esp[i << 1]);\r
-       i++;\r
-       for(; i < 8; i++){\r
-               Error_Put_String("%s:0x%08X %s:0x%08X", cpu_exception_infos[i << 1], esp[(i << 1) - 1], cpu_exception_infos[(i << 1) + 1], esp[i << 1]);\r
-       }\r
-\r
-       Error_Put_String("#Control Registers");\r
-       Error_Put_String("CR0 = 0x%08X", Load_CR0());\r
-       Error_Put_String("CR2 = 0x%08X", Load_CR2());\r
-       Error_Put_String("CR3 = 0x%08X", Load_CR3());\r
-\r
-       Error_Put_String("Opcode[0x%X:0x%X]:0x%X", SegmentDescriptor_Get_Base(&gdt[esp[0x0b] >> 3]), esp[0x0a], ((uchar *)(SegmentDescriptor_Get_Base(&gdt[esp[0x0b] >> 3])))[esp[0x0a]]);\r
-       return;\r
-}\r