//
// Copyright (c) Microsoft Corporation. All rights reserved. 
//
// You may only use this code if you agree to the terms of the Windows Research Kernel Source Code License agreement (see License.txt).
// If you do not agree to the terms, do not use the code.
//

    Exi386InterlockedDecrementLong
    Exi386InterlockedIncrementLong
    Exi386InterlockedExchangeUlong

    ExfInterlockedAddUlong
    ExfInterlockedInsertHeadList
    ExfInterlockedInsertTailList
    ExfInterlockedRemoveHeadList
    ExfInterlockedPopEntryList
    ExfInterlockedPushEntryList
    Exfi386InterlockedDecrementLong
    Exfi386InterlockedIncrementLong
    Exfi386InterlockedExchangeUlong

    ExInterlockedCompareExchange64
    ExfInterlockedCompareExchange64

    ExInterlockedFlushSList
    ExInterlockedPopEntrySList
    ExInterlockedPushEntrySList
    InterlockedPopEntrySList
    InterlockedPushEntrySList

    ExAllocateFromPagedLookasideList
    ExFreeToPagedLookasideList

    InterlockedIncrement = __InterlockedIncrement
    InterlockedDecrement = __InterlockedDecrement
    InterlockedExchange = Exfi386InterlockedExchangeUlong
    InterlockedCompareExchange = __InterlockedCompareExchange
    InterlockedExchangeAdd = __InterlockedExchangeAdd

    RtlCaptureContext

    KeInvalidateAllCaches

    KeSetProfileIrql
    KeIsExecutingDpc = __KeIsExecutingDpc
    KeI386MachineType CONSTANT
    KeI386SetGdtSelector
    KeI386Call16BitFunction
    KeI386Call16BitCStyleFunction

    KefAcquireSpinLockAtDpcLevel
    KefReleaseSpinLockFromDpcLevel

    Kii386SpinOnSpinLock                // debug only

    MmLockPageableImageSection=MmLockPageableDataSection
    MmLockPagableImageSection=MmLockPageableDataSection
    MmLockPagableDataSection=MmLockPageableDataSection
    MmHighestUserAddress CONSTANT       // data - use pointer for access
    MmSystemRangeStart CONSTANT         // data - use pointer for access
    MmUserProbeAddress CONSTANT         // data - use pointer for access

//
// The following are macros on MIPS, but real procedures on the x86
//

    KeGetCurrentThread = __KeGetCurrentThread
    KeGetPreviousMode
    READ_REGISTER_UCHAR
    READ_REGISTER_ULONG
    READ_REGISTER_USHORT
    READ_REGISTER_BUFFER_UCHAR
    READ_REGISTER_BUFFER_ULONG
    READ_REGISTER_BUFFER_USHORT
    WRITE_REGISTER_UCHAR
    WRITE_REGISTER_ULONG
    WRITE_REGISTER_USHORT
    WRITE_REGISTER_BUFFER_UCHAR
    WRITE_REGISTER_BUFFER_ULONG
    WRITE_REGISTER_BUFFER_USHORT

//
// The following are 386 architecture specific
//

    KiIpiServiceRoutine
    KiCoprocessorError
    KiDeliverApc
    KiDispatchInterrupt
    KiUnexpectedInterrupt
    Kei386EoiHelper

    Ke386IoSetAccessProcess
    Ke386QueryIoAccessMap
    Ke386SetIoAccessMap

    KeI386AbiosCall
    KeI386AllocateGdtSelectors
    KeI386ReleaseGdtSelectors
    KeI386FlatToGdtSelector
    KeI386GetLid
    KeI386ReleaseLid
    Ke386CallBios
    KeSaveFloatingPointState
    KeRestoreFloatingPointState

    memcpy
    memmove
    memset

    _abnormal_termination
    _except_handler2
    _except_handler3
    _global_unwind2
    _local_unwind2

// Int64 helper functions (currently linked in from int64.lib)

    _aullrem
    _aulldiv
    _aullshr
    _allshr
    _allshl
    _allrem
    _allmul
    _alldiv
    _CIsin
    _CIcos
    _CIsqrt
    _aulldvrm
    _alldvrm

