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)