From 845ec2108dd6e5bfddc4b66fa10877dea74ce705 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 14 May 2015 14:49:41 +0000 Subject: [PATCH] [NTOSKRNL] Fix some Interlocked exports for non-x86, export some ARM specific functions [NTDLL] Export some ARM specific functions [SCSIPORT] Fix ARM exports svn path=/trunk/; revision=67714 --- reactos/dll/ntdll/def/ntdll.spec | 32 +++++++---- .../drivers/storage/scsiport/scsiport.spec | 50 ++++++++-------- reactos/ntoskrnl/ntoskrnl.spec | 57 ++++++++++++------- 3 files changed, 83 insertions(+), 56 deletions(-) diff --git a/reactos/dll/ntdll/def/ntdll.spec b/reactos/dll/ntdll/def/ntdll.spec index 4b5ffcc3ea6..dd3a123ff75 100644 --- a/reactos/dll/ntdll/def/ntdll.spec +++ b/reactos/dll/ntdll/def/ntdll.spec @@ -716,9 +716,9 @@ @ stdcall RtlIntegerToChar(long long long ptr) @ stdcall RtlIntegerToUnicodeString(long long ptr) @ stdcall -arch=win32 -ret64 RtlInterlockedCompareExchange64(ptr double double) -@ stdcall -arch=i386,x86_64 RtlInterlockedFlushSList(ptr) -@ stdcall -arch=i386,x86_64 RtlInterlockedPopEntrySList(ptr) -@ stdcall -arch=i386,x86_64 RtlInterlockedPushEntrySList(ptr ptr) +@ stdcall RtlInterlockedFlushSList(ptr) +@ stdcall RtlInterlockedPopEntrySList(ptr) +@ stdcall RtlInterlockedPushEntrySList(ptr ptr) @ stdcall RtlIpv4AddressToStringA(ptr ptr) @ stdcall RtlIpv4AddressToStringExA(ptr long ptr ptr) @ stdcall RtlIpv4AddressToStringExW(ptr long ptr ptr) @@ -1272,7 +1272,8 @@ @ cdecl -arch=i386 _CIpow() @ cdecl -arch=i386 _CIsin() @ cdecl -arch=i386 _CIsqrt() -@ cdecl -arch=x86_64 __C_specific_handler(ptr long ptr ptr) +@ cdecl -arch=x86_64,arm __C_specific_handler(ptr long ptr ptr) +@ cdecl -arch=arm __jump_unwind() @ cdecl __isascii(long) @ cdecl __iscsym(long) @ cdecl __iscsymf(long) @@ -1290,7 +1291,7 @@ @ cdecl -arch=i386 -ret64 _aullrem(double double) @ cdecl -arch=i386 _aullshr() @ extern -arch=i386 _chkstk -@ cdecl -arch=i386,x86_64 _fltused() +@ cdecl -arch=i386,x86_64,arm _fltused() @ cdecl -arch=i386 -ret64 _ftol() @ cdecl _i64toa(double ptr long) @ cdecl _i64tow(double ptr long) @@ -1334,10 +1335,10 @@ @ cdecl atoi(str) @ cdecl atol(str) @ cdecl bsearch(ptr ptr long long ptr) -@ cdecl -arch=i386,x86_64 ceil(double) -@ cdecl -arch=i386,x86_64 cos(double) -@ cdecl -arch=i386,x86_64 fabs(double) -@ cdecl -arch=i386,x86_64 floor(double) +@ cdecl ceil(double) +@ cdecl cos(double) +@ cdecl fabs(double) +@ cdecl floor(double) @ cdecl isalnum(long) @ cdecl isalpha(long) @ cdecl iscntrl(long) @@ -1366,7 +1367,7 @@ @ cdecl memset(ptr long long) @ cdecl -arch=i386,x86_64 pow(double double) @ cdecl qsort(ptr long long ptr) -@ cdecl -arch=i386,x86_64 sin(double) +@ cdecl sin(double) @ varargs sprintf(ptr str) @ cdecl -arch=i386,x86_64 sqrt(double) @ varargs sscanf(str str) @@ -1410,3 +1411,14 @@ @ cdecl wcstol(wstr ptr long) @ cdecl wcstombs(ptr ptr long) @ cdecl wcstoul(wstr ptr long) + +# FIXME: check if this is correct +@ stdcall -arch=arm __dtoi64() +@ stdcall -arch=arm __dtou64() +@ stdcall -arch=arm __i64tod() +@ stdcall -arch=arm __u64tod() +@ stdcall -arch=arm __rt_sdiv() +@ stdcall -arch=arm __rt_sdiv64() +@ stdcall -arch=arm __rt_udiv() +@ stdcall -arch=arm __rt_udiv64() +@ stdcall -arch=arm __rt_srsh() diff --git a/reactos/drivers/storage/scsiport/scsiport.spec b/reactos/drivers/storage/scsiport/scsiport.spec index b1b02c59385..705ab7c3a45 100644 --- a/reactos/drivers/storage/scsiport/scsiport.spec +++ b/reactos/drivers/storage/scsiport/scsiport.spec @@ -1,7 +1,7 @@ @ cdecl ScsiDebugPrint() @ stdcall ScsiPortCompleteRequest(ptr long long long long) @ stdcall ScsiPortConvertPhysicalAddressToUlong(long long) -@ stdcall -arch=i386 ScsiPortConvertUlongToPhysicalAddress(long) NTOSKRNL.RtlConvertUlongToLargeInteger +@ stdcall -arch=i386,arm ScsiPortConvertUlongToPhysicalAddress(long) NTOSKRNL.RtlConvertUlongToLargeInteger @ stdcall -arch=x86_64 ScsiPortConvertUlongToPhysicalAddress(long) @ stdcall ScsiPortFlushDma(ptr) @ stdcall ScsiPortFreeDeviceBase(ptr ptr) @@ -17,18 +17,18 @@ @ stdcall ScsiPortLogError(ptr ptr long long long long long) @ stdcall ScsiPortMoveMemory(ptr ptr long) @ cdecl ScsiPortNotification() -@ stdcall -arch=i386 ScsiPortReadPortBufferUchar(ptr ptr long) HAL.READ_PORT_BUFFER_UCHAR -@ stdcall -arch=i386 ScsiPortReadPortBufferUshort(ptr ptr long) HAL.READ_PORT_BUFFER_USHORT -@ stdcall -arch=i386 ScsiPortReadPortBufferUlong(ptr ptr long) HAL.READ_PORT_BUFFER_ULONG -@ stdcall -arch=i386 ScsiPortReadPortUchar(ptr) HAL.READ_PORT_UCHAR -@ stdcall -arch=i386 ScsiPortReadPortUshort(ptr) HAL.READ_PORT_USHORT -@ stdcall -arch=i386 ScsiPortReadPortUlong(ptr) HAL.READ_PORT_ULONG -@ stdcall -arch=i386 ScsiPortReadRegisterBufferUchar(ptr ptr long) NTOSKRNL.READ_REGISTER_BUFFER_UCHAR -@ stdcall -arch=i386 ScsiPortReadRegisterBufferUshort(ptr ptr long) NTOSKRNL.READ_REGISTER_BUFFER_USHORT -@ stdcall -arch=i386 ScsiPortReadRegisterBufferUlong(ptr ptr long) NTOSKRNL.READ_REGISTER_BUFFER_ULONG -@ stdcall -arch=i386 ScsiPortReadRegisterUchar(ptr) NTOSKRNL.READ_REGISTER_UCHAR -@ stdcall -arch=i386 ScsiPortReadRegisterUshort(ptr) NTOSKRNL.READ_REGISTER_USHORT -@ stdcall -arch=i386 ScsiPortReadRegisterUlong(ptr) NTOSKRNL.READ_REGISTER_ULONG +@ stdcall -arch=i386,arm ScsiPortReadPortBufferUchar(ptr ptr long) HAL.READ_PORT_BUFFER_UCHAR +@ stdcall -arch=i386,arm ScsiPortReadPortBufferUshort(ptr ptr long) HAL.READ_PORT_BUFFER_USHORT +@ stdcall -arch=i386,arm ScsiPortReadPortBufferUlong(ptr ptr long) HAL.READ_PORT_BUFFER_ULONG +@ stdcall -arch=i386,arm ScsiPortReadPortUchar(ptr) HAL.READ_PORT_UCHAR +@ stdcall -arch=i386,arm ScsiPortReadPortUshort(ptr) HAL.READ_PORT_USHORT +@ stdcall -arch=i386,arm ScsiPortReadPortUlong(ptr) HAL.READ_PORT_ULONG +@ stdcall -arch=i386,arm ScsiPortReadRegisterBufferUchar(ptr ptr long) NTOSKRNL.READ_REGISTER_BUFFER_UCHAR +@ stdcall -arch=i386,arm ScsiPortReadRegisterBufferUshort(ptr ptr long) NTOSKRNL.READ_REGISTER_BUFFER_USHORT +@ stdcall -arch=i386,arm ScsiPortReadRegisterBufferUlong(ptr ptr long) NTOSKRNL.READ_REGISTER_BUFFER_ULONG +@ stdcall -arch=i386,arm ScsiPortReadRegisterUchar(ptr) NTOSKRNL.READ_REGISTER_UCHAR +@ stdcall -arch=i386,arm ScsiPortReadRegisterUshort(ptr) NTOSKRNL.READ_REGISTER_USHORT +@ stdcall -arch=i386,arm ScsiPortReadRegisterUlong(ptr) NTOSKRNL.READ_REGISTER_ULONG @ stdcall -arch=x86_64 ScsiPortReadPortBufferUchar(ptr ptr long) @ stdcall -arch=x86_64 ScsiPortReadPortBufferUshort(ptr ptr long) @ stdcall -arch=x86_64 ScsiPortReadPortBufferUlong(ptr ptr long) @@ -44,18 +44,18 @@ @ stdcall ScsiPortSetBusDataByOffset(ptr long long long ptr long long) @ stdcall ScsiPortStallExecution(long) HAL.KeStallExecutionProcessor @ stdcall ScsiPortValidateRange(ptr long long long long long long) -@ stdcall -arch=i386 ScsiPortWritePortBufferUchar(ptr ptr long) HAL.WRITE_PORT_BUFFER_UCHAR -@ stdcall -arch=i386 ScsiPortWritePortBufferUshort(ptr ptr long) HAL.WRITE_PORT_BUFFER_USHORT -@ stdcall -arch=i386 ScsiPortWritePortBufferUlong(ptr ptr long) HAL.WRITE_PORT_BUFFER_ULONG -@ stdcall -arch=i386 ScsiPortWritePortUchar(ptr long) HAL.WRITE_PORT_UCHAR -@ stdcall -arch=i386 ScsiPortWritePortUshort(ptr long) HAL.WRITE_PORT_USHORT -@ stdcall -arch=i386 ScsiPortWritePortUlong(ptr long) HAL.WRITE_PORT_ULONG -@ stdcall -arch=i386 ScsiPortWriteRegisterBufferUchar(ptr ptr long) NTOSKRNL.WRITE_REGISTER_BUFFER_UCHAR -@ stdcall -arch=i386 ScsiPortWriteRegisterBufferUshort(ptr ptr long) NTOSKRNL.WRITE_REGISTER_BUFFER_USHORT -@ stdcall -arch=i386 ScsiPortWriteRegisterBufferUlong(ptr ptr long) NTOSKRNL.WRITE_REGISTER_BUFFER_ULONG -@ stdcall -arch=i386 ScsiPortWriteRegisterUchar(ptr long) NTOSKRNL.WRITE_REGISTER_UCHAR -@ stdcall -arch=i386 ScsiPortWriteRegisterUshort(ptr long) NTOSKRNL.WRITE_REGISTER_USHORT -@ stdcall -arch=i386 ScsiPortWriteRegisterUlong(ptr long) NTOSKRNL.WRITE_REGISTER_ULONG +@ stdcall -arch=i386,arm ScsiPortWritePortBufferUchar(ptr ptr long) HAL.WRITE_PORT_BUFFER_UCHAR +@ stdcall -arch=i386,arm ScsiPortWritePortBufferUshort(ptr ptr long) HAL.WRITE_PORT_BUFFER_USHORT +@ stdcall -arch=i386,arm ScsiPortWritePortBufferUlong(ptr ptr long) HAL.WRITE_PORT_BUFFER_ULONG +@ stdcall -arch=i386,arm ScsiPortWritePortUchar(ptr long) HAL.WRITE_PORT_UCHAR +@ stdcall -arch=i386,arm ScsiPortWritePortUshort(ptr long) HAL.WRITE_PORT_USHORT +@ stdcall -arch=i386,arm ScsiPortWritePortUlong(ptr long) HAL.WRITE_PORT_ULONG +@ stdcall -arch=i386,arm ScsiPortWriteRegisterBufferUchar(ptr ptr long) NTOSKRNL.WRITE_REGISTER_BUFFER_UCHAR +@ stdcall -arch=i386,arm ScsiPortWriteRegisterBufferUshort(ptr ptr long) NTOSKRNL.WRITE_REGISTER_BUFFER_USHORT +@ stdcall -arch=i386,arm ScsiPortWriteRegisterBufferUlong(ptr ptr long) NTOSKRNL.WRITE_REGISTER_BUFFER_ULONG +@ stdcall -arch=i386,arm ScsiPortWriteRegisterUchar(ptr long) NTOSKRNL.WRITE_REGISTER_UCHAR +@ stdcall -arch=i386,arm ScsiPortWriteRegisterUshort(ptr long) NTOSKRNL.WRITE_REGISTER_USHORT +@ stdcall -arch=i386,arm ScsiPortWriteRegisterUlong(ptr long) NTOSKRNL.WRITE_REGISTER_ULONG @ stdcall -arch=x86_64 ScsiPortWritePortBufferUchar(ptr ptr long) @ stdcall -arch=x86_64 ScsiPortWritePortBufferUshort(ptr ptr long) @ stdcall -arch=x86_64 ScsiPortWritePortBufferUlong(ptr ptr long) diff --git a/reactos/ntoskrnl/ntoskrnl.spec b/reactos/ntoskrnl/ntoskrnl.spec index 5f7a0725804..d2087d8f234 100644 --- a/reactos/ntoskrnl/ntoskrnl.spec +++ b/reactos/ntoskrnl/ntoskrnl.spec @@ -100,27 +100,27 @@ @ stdcall ExInitializeRundownProtectionCacheAware(ptr long) @ stdcall ExInitializeZone(ptr long ptr long) @ stdcall ExInterlockedAddLargeInteger(ptr long long ptr) -@ fastcall -arch=i386,arm ExInterlockedAddLargeStatistic(ptr long) +@ fastcall -arch=i386 ExInterlockedAddLargeStatistic(ptr long) @ stdcall ExInterlockedAddUlong(ptr long ptr) @ fastcall -arch=i386 ExInterlockedCompareExchange64(ptr ptr ptr ptr) @ stdcall -arch=i386 ExInterlockedDecrementLong(ptr ptr) @ stdcall -arch=i386 ExInterlockedExchangeUlong(ptr long ptr) @ stdcall ExInterlockedExtendZone(ptr ptr long ptr) -@ fastcall -arch=i386,arm ExInterlockedFlushSList(ptr) -@ stdcall -arch=i386,arm ExInterlockedIncrementLong(ptr ptr) +@ fastcall -arch=i386 ExInterlockedFlushSList(ptr) +@ stdcall -arch=i386 ExInterlockedIncrementLong(ptr ptr) @ stdcall ExInterlockedInsertHeadList(ptr ptr ptr) @ stdcall ExInterlockedInsertTailList(ptr ptr ptr) @ stdcall ExInterlockedPopEntryList(ptr ptr) -@ fastcall -arch=i386,arm ExInterlockedPopEntrySList(ptr ptr) +@ fastcall -arch=i386 ExInterlockedPopEntrySList(ptr ptr) @ stdcall ExInterlockedPushEntryList(ptr ptr ptr) -@ fastcall -arch=i386,arm ExInterlockedPushEntrySList(ptr ptr ptr) +@ fastcall -arch=i386 ExInterlockedPushEntrySList(ptr ptr ptr) @ stdcall ExInterlockedRemoveHeadList(ptr ptr) @ stdcall ExIsProcessorFeaturePresent(long) @ stdcall ExIsResourceAcquiredExclusiveLite(ptr) @ stdcall ExIsResourceAcquiredSharedLite(ptr) @ stdcall ExLocalTimeToSystemTime(ptr ptr) @ stdcall ExNotifyCallback(ptr ptr ptr) -@ stdcall -arch=x86_64 ExQueryDepthSList(ptr) +@ stdcall -arch=x86_64,arm ExQueryDepthSList(ptr) RtlQueryDepthSList @ stdcall ExQueryPoolBlockSize(ptr ptr) @ stdcall ExQueueWorkItem(ptr long) @ stdcall ExRaiseAccessViolation() @@ -159,21 +159,21 @@ @ extern ExWindowStationObjectType @ fastcall ExfAcquirePushLockExclusive(ptr) @ fastcall ExfAcquirePushLockShared(ptr) -@ fastcall -arch=i386,arm ExfInterlockedAddUlong(ptr long ptr) -@ fastcall -arch=i386,arm ExfInterlockedCompareExchange64(ptr ptr ptr) -@ fastcall -arch=i386,arm ExfInterlockedInsertHeadList(ptr ptr ptr) -@ fastcall -arch=i386,arm ExfInterlockedInsertTailList(ptr ptr ptr) -@ fastcall -arch=i386,arm ExfInterlockedPopEntryList(ptr ptr) -@ fastcall -arch=i386,arm ExfInterlockedPushEntryList(ptr ptr ptr) -@ fastcall -arch=i386,arm ExfInterlockedRemoveHeadList(ptr ptr) +@ fastcall -arch=i386 ExfInterlockedAddUlong(ptr long ptr) +@ fastcall -arch=i386 ExfInterlockedCompareExchange64(ptr ptr ptr) +@ fastcall -arch=i386 ExfInterlockedInsertHeadList(ptr ptr ptr) +@ fastcall -arch=i386 ExfInterlockedInsertTailList(ptr ptr ptr) +@ fastcall -arch=i386 ExfInterlockedPopEntryList(ptr ptr) +@ fastcall -arch=i386 ExfInterlockedPushEntryList(ptr ptr ptr) +@ fastcall -arch=i386 ExfInterlockedRemoveHeadList(ptr ptr) @ fastcall ExfReleasePushLock(ptr) @ fastcall ExfReleasePushLockExclusive(ptr) @ fastcall ExfReleasePushLockShared(ptr) @ fastcall ExfTryToWakePushLock(ptr) @ fastcall ExfUnblockPushLock(ptr ptr) -@ stdcall -arch=x86_64 ExpInterlockedFlushSList(ptr) -@ stdcall -arch=x86_64 ExpInterlockedPopEntrySList(ptr ptr) -@ stdcall -arch=x86_64 ExpInterlockedPushEntrySList(ptr ptr) +@ stdcall -arch=x86_64,arm ExpInterlockedFlushSList(ptr) RtlInterlockedFlushSList +@ stdcall -arch=x86_64,arm ExpInterlockedPopEntrySList(ptr ptr) RtlInterlockedPopEntrySList +@ stdcall -arch=x86_64,arm ExpInterlockedPushEntrySList(ptr ptr) RtlInterlockedPushEntrySList @ fastcall -arch=i386 Exfi386InterlockedDecrementLong(ptr) @ fastcall -arch=i386 Exfi386InterlockedExchangeUlong(ptr long) @ fastcall -arch=i386 Exfi386InterlockedIncrementLong(ptr) @@ -324,8 +324,10 @@ @ fastcall -arch=i386,arm InterlockedExchange(ptr long) @ fastcall -arch=i386,arm InterlockedExchangeAdd(ptr long) @ fastcall -arch=i386,arm InterlockedIncrement(ptr) -@ fastcall -arch=i386,arm InterlockedPopEntrySList(ptr) -@ fastcall -arch=i386,arm InterlockedPushEntrySList(ptr ptr) +@ fastcall -arch=i386 InterlockedPopEntrySList(ptr) +@ fastcall -arch=i386 InterlockedPushEntrySList(ptr ptr) +@ stdcall -arch=arm InterlockedPopEntrySList(ptr) RtlInterlockedPopEntrySList +@ stdcall -arch=arm InterlockedPushEntrySList(ptr ptr) RtlInterlockedPushEntrySList @ stdcall -arch=x86_64 InitializeSListHead(ptr) RtlInitializeSListHead @ stdcall IoAcquireCancelSpinLock(ptr) @ stdcall IoAcquireRemoveLockEx(ptr ptr str long long) @@ -582,6 +584,7 @@ @ stdcall KeFindConfigurationEntry(ptr long long ptr) @ stdcall KeFindConfigurationNextEntry(ptr long long ptr ptr) @ stdcall KeFlushEntireTb(long long) +@ stdcall -arch=arm KeFlushIoBuffers(ptr long long) @ stdcall KeFlushQueuedDpcs() @ stdcall KeGenericCallDpc(ptr ptr) @ stdcall KeGetCurrentThread() @@ -1535,7 +1538,8 @@ @ stdcall ZwWaitForSingleObject(ptr long ptr) @ stdcall ZwWriteFile(ptr ptr ptr ptr ptr ptr long ptr ptr) @ stdcall ZwYieldExecution() -@ cdecl -arch=x86_64 __C_specific_handler(ptr long ptr ptr) +@ cdecl -arch=x86_64,arm __C_specific_handler(ptr long ptr ptr) +@ cdecl -arch=arm __jump_unwind() @ cdecl -arch=x86_64 __chkstk() ;@ cdecl -arch=x86_64 __misaligned_access() ;@ cdecl -arch=i386 _CIcos @@ -1561,7 +1565,7 @@ @ cdecl -arch=i386,arm _local_unwind2() @ cdecl -arch=x86_64 _local_unwind() @ cdecl _purecall() -@ cdecl -arch=x86_64 _setjmp(ptr ptr) +@ cdecl -arch=x86_64,arm _setjmp(ptr ptr) @ cdecl -arch=x86_64 _setjmpex(ptr ptr) @ cdecl _snprintf() @ cdecl _snwprintf() @@ -1588,7 +1592,7 @@ @ cdecl isspace() @ cdecl isupper() @ cdecl isxdigit() -@ cdecl -arch=x86_64 longjmp(ptr long) +@ cdecl -arch=x86_64,arm longjmp(ptr long) @ cdecl mbstowcs() @ cdecl mbtowc() @ cdecl memchr() @@ -1633,3 +1637,14 @@ @ cdecl wcsstr() @ cdecl wcstombs() @ cdecl wctomb() + +# FIXME: check if this is correct +@ stdcall -arch=arm __dtoi64() +@ stdcall -arch=arm __dtou64() +@ stdcall -arch=arm __i64tod() +@ stdcall -arch=arm __u64tod() +@ stdcall -arch=arm __rt_sdiv() +@ stdcall -arch=arm __rt_sdiv64() +@ stdcall -arch=arm __rt_udiv() +@ stdcall -arch=arm __rt_udiv64() +@ stdcall -arch=arm __rt_srsh()