C to C++ migration and refactoring #17

Merged
harraiken merged 67 commits from cxxtest into master 2025-09-24 20:18:35 +02:00
2 changed files with 62 additions and 0 deletions
Showing only changes of commit 3e097c260d - Show all commits

View File

@@ -4,6 +4,7 @@
* FILE: xtoskrnl/rtl/amd64/exsup.cc * FILE: xtoskrnl/rtl/amd64/exsup.cc
* DESCRIPTION: Exception handling for AMD64 architecture * DESCRIPTION: Exception handling for AMD64 architecture
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org> * DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
* Aiken Harris <harraiken91@gmail.com>
*/ */
#include <xtos.hh> #include <xtos.hh>
@@ -23,6 +24,24 @@ __C_specific_handler(IN PEXCEPTION_RECORD ExceptionRecord,
return ExceptionContinueExecution; return ExceptionContinueExecution;
} }
XTCLINK
XTCDECL
EXCEPTION_DISPOSITION
__CxxFrameHandler3(IN PEXCEPTION_RECORD ExceptionRecord,
IN PVOID EstablisherFrame,
IN OUT PCONTEXT ContextRecord,
IN OUT PVOID DispatcherContext)
{
UNIMPLEMENTED;
/* Disable interrupts and hang */
AR::CpuFunc::ClearInterruptFlag();
KE::Crash::Panic(0); // CXX_FRAME_HANDLER_CALLED
/* Continue search */
return ExceptionContinueSearch;
}
XTCLINK XTCLINK
XTCDECL XTCDECL
INT INT
@@ -36,3 +55,15 @@ _except_handler3(PEXCEPTION_RECORD ExceptionRecord,
/* Handler not found */ /* Handler not found */
return 0; return 0;
} }
XTCLINK
XTCDECL
VOID
_purecall(VOID)
{
UNIMPLEMENTED;
/* Disable interrupts and hang */
AR::CpuFunc::ClearInterruptFlag();
KE::Crash::Panic(0); // PURE_VIRTUAL_FUNCTION_CALL
}

View File

@@ -4,6 +4,7 @@
* FILE: xtoskrnl/rtl/i686/exsup.cc * FILE: xtoskrnl/rtl/i686/exsup.cc
* DESCRIPTION: Exception handling for i686 architecture * DESCRIPTION: Exception handling for i686 architecture
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org> * DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
* Aiken Harris <harraiken91@gmail.com>
*/ */
#include <xtos.hh> #include <xtos.hh>
@@ -23,6 +24,24 @@ __C_specific_handler(IN PEXCEPTION_RECORD ExceptionRecord,
return ExceptionContinueExecution; return ExceptionContinueExecution;
} }
XTCLINK
XTCDECL
EXCEPTION_DISPOSITION
__CxxFrameHandler3(IN PEXCEPTION_RECORD ExceptionRecord,
IN PVOID EstablisherFrame,
IN OUT PCONTEXT ContextRecord,
IN OUT PVOID DispatcherContext)
{
UNIMPLEMENTED;
/* Disable interrupts and hang */
AR::CpuFunc::ClearInterruptFlag();
KE::Crash::Panic(0); // CXX_FRAME_HANDLER_CALLED
/* Continue search */
return ExceptionContinueSearch;
}
XTCLINK XTCLINK
XTCDECL XTCDECL
INT INT
@@ -36,3 +55,15 @@ _except_handler3(PEXCEPTION_RECORD ExceptionRecord,
/* Handler not found */ /* Handler not found */
return 0; return 0;
} }
XTCLINK
XTCDECL
VOID
_purecall(VOID)
{
UNIMPLEMENTED;
/* Disable interrupts and hang */
AR::CpuFunc::ClearInterruptFlag();
KE::Crash::Panic(0); // PURE_VIRTUAL_FUNCTION_CALL
}