From 534aaba27ec1e3face4f33ad4f67066c123fafdb Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Sun, 26 Apr 2026 23:10:42 +0200 Subject: [PATCH] Declare compiler intrinsics with proper symbol names --- xtoskrnl/includes/rtl.hh | 2 ++ xtoskrnl/includes/rtl/amd64/intrin.hh | 17 +++++++++++++++++ xtoskrnl/includes/rtl/i686/intrin.hh | 23 +++++++++++++++++++++++ xtoskrnl/rtl/i686/intrin.cc | 19 +++++++++---------- 4 files changed, 51 insertions(+), 10 deletions(-) create mode 100644 xtoskrnl/includes/rtl/amd64/intrin.hh create mode 100644 xtoskrnl/includes/rtl/i686/intrin.hh diff --git a/xtoskrnl/includes/rtl.hh b/xtoskrnl/includes/rtl.hh index d293344..37fb705 100644 --- a/xtoskrnl/includes/rtl.hh +++ b/xtoskrnl/includes/rtl.hh @@ -11,6 +11,8 @@ #include +#include XTOS_ARCH_HEADER(rtl, intrin.hh) + #include #include #include diff --git a/xtoskrnl/includes/rtl/amd64/intrin.hh b/xtoskrnl/includes/rtl/amd64/intrin.hh new file mode 100644 index 0000000..377f621 --- /dev/null +++ b/xtoskrnl/includes/rtl/amd64/intrin.hh @@ -0,0 +1,17 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/includes/rtl/amd64/intrin.hh + * DESCRIPTION: Compiler intrinsic support routines + * DEVELOPERS: Aiken Harris + */ + +#ifndef __XTOSKRNL_RTL_AMD64_INTRIN_HH +#define __XTOSKRNL_RTL_AMD64_INTRIN_HH + +#include + + +/* Forward declarations enforcing the XTAPI calling convention and preserving the raw unmangled symbol names */ + +#endif /* __XTOSKRNL_RTL_AMD64_INTRIN_HH */ diff --git a/xtoskrnl/includes/rtl/i686/intrin.hh b/xtoskrnl/includes/rtl/i686/intrin.hh new file mode 100644 index 0000000..a207eed --- /dev/null +++ b/xtoskrnl/includes/rtl/i686/intrin.hh @@ -0,0 +1,23 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/includes/rtl/i686/intrin.hh + * DESCRIPTION: Compiler intrinsic support routines + * DEVELOPERS: Aiken Harris + */ + +#ifndef __XTOSKRNL_RTL_I686_INTRIN_HH +#define __XTOSKRNL_RTL_I686_INTRIN_HH + +#include + + +/* Forward declarations enforcing the XTAPI calling convention and preserving the raw unmangled symbol names */ +XTCLINK XTAPI LONGLONG _alldiv(IN LONGLONG Dividend, IN LONGLONG Divisor) XTSYMBOL("__alldiv"); +XTCLINK XTAPI LONGLONG _alldvrm(IN LONGLONG Dividend, IN LONGLONG Divisor, OUT PLONGLONG Remainder) XTSYMBOL("__alldvrm"); +XTCLINK XTAPI LONGLONG _allrem(IN LONGLONG Dividend, IN LONGLONG Divisor) XTSYMBOL("__allrem"); +XTCLINK XTAPI ULONGLONG _aulldiv(IN ULONGLONG Dividend, IN ULONGLONG Divisor) XTSYMBOL("__aulldiv"); +XTCLINK XTAPI ULONGLONG _aulldvrm(IN ULONGLONG Dividend, IN ULONGLONG Divisor, OUT PULONGLONG Remainder) XTSYMBOL("__aulldvrm"); +XTCLINK XTAPI ULONGLONG _aullrem(IN ULONGLONG Dividend, IN ULONGLONG Divisor) XTSYMBOL("__aullrem"); + +#endif /* __XTOSKRNL_RTL_I686_INTRIN_HH */ diff --git a/xtoskrnl/rtl/i686/intrin.cc b/xtoskrnl/rtl/i686/intrin.cc index bddd45a..8fc14af 100644 --- a/xtoskrnl/rtl/i686/intrin.cc +++ b/xtoskrnl/rtl/i686/intrin.cc @@ -9,7 +9,6 @@ #include - /** * Divides a 64-bit signed integer by a 64-bit signed integer. * @@ -24,7 +23,7 @@ * @since XT 1.0 */ XTCLINK -XTCDECL +XTAPI LONGLONG _alldiv(IN LONGLONG Dividend, IN LONGLONG Divisor) @@ -50,7 +49,7 @@ _alldiv(IN LONGLONG Dividend, * @since XT 1.0 */ XTCLINK -XTCDECL +XTAPI LONGLONG _alldvrm(IN LONGLONG Dividend, IN LONGLONG Divisor, @@ -73,7 +72,7 @@ _alldvrm(IN LONGLONG Dividend, * @since XT 1.0 */ XTCLINK -XTCDECL +XTAPI LONGLONG _allrem(IN LONGLONG Dividend, IN LONGLONG Divisor) @@ -99,7 +98,7 @@ _allrem(IN LONGLONG Dividend, * @since XT 1.0 */ XTCLINK -XTCDECL +XTAPI ULONGLONG _aulldiv(IN ULONGLONG Dividend, IN ULONGLONG Divisor) @@ -125,11 +124,11 @@ _aulldiv(IN ULONGLONG Dividend, * @since XT 1.0 */ XTCLINK -XTCDECL +XTAPI ULONGLONG -_aulldvrm(ULONGLONG Dividend, - ULONGLONG Divisor, - PULONGLONG Remainder) +_aulldvrm(IN ULONGLONG Dividend, + IN ULONGLONG Divisor, + OUT PULONGLONG Remainder) { /* Call the internal unsigned division routine to compute both quotient and remainder */ return RTL::Math::DivideUnsigned64(Dividend, Divisor, Remainder); @@ -149,7 +148,7 @@ _aulldvrm(ULONGLONG Dividend, * @since XT 1.0 */ XTCLINK -XTCDECL +XTAPI ULONGLONG _aullrem(IN ULONGLONG Dividend, IN ULONGLONG Divisor)