Author: arty
Date: Mon Sep 4 10:38:37 2006
New Revision: 23909
URL:
http://svn.reactos.org/svn/reactos?rev=23909&view=rev
Log:
Link ntoskrnl.
Removed:
branches/powerpc/reactos/lib/rtl/bitmap.c
Modified:
branches/powerpc/reactos/lib/rtl/bit.c
branches/powerpc/reactos/tools/ppc.lost+found/link-ntoskrnl
Modified: branches/powerpc/reactos/lib/rtl/bit.c
URL:
http://svn.reactos.org/svn/reactos/branches/powerpc/reactos/lib/rtl/bit.c?r…
==============================================================================
--- branches/powerpc/reactos/lib/rtl/bit.c (original)
+++ branches/powerpc/reactos/lib/rtl/bit.c Mon Sep 4 10:38:37 2006
@@ -13,45 +13,4 @@
/* FUNCTIONS ****************************************************************/
-/*
- * @implemented
- */
-CCHAR NTAPI
-RtlFindLeastSignificantBit(IN ULONGLONG Set)
-{
- int i;
-
- if (Set == 0ULL)
- return -1;
-
- for (i = 0; i < 64; i++)
- {
- if (Set & (1 << i))
- return (CCHAR)i;
- }
-
- return -1;
-}
-
-
-/*
- * @implemented
- */
-CCHAR NTAPI
-RtlFindMostSignificantBit(IN ULONGLONG Set)
-{
- int i;
-
- if (Set == 0ULL)
- return -1;
-
- for (i = 63; i >= 0; i--)
- {
- if (Set & (1 << i))
- return (CCHAR)i;
- }
-
- return -1;
-}
-
/* EOF */
Removed: branches/powerpc/reactos/lib/rtl/bitmap.c
URL:
http://svn.reactos.org/svn/reactos/branches/powerpc/reactos/lib/rtl/bitmap.…
==============================================================================
--- branches/powerpc/reactos/lib/rtl/bitmap.c (original)
+++ branches/powerpc/reactos/lib/rtl/bitmap.c (removed)
@@ -1,979 +1,0 @@
-/* COPYRIGHT: See COPYING in the top level directory
- * PROJECT: ReactOS system libraries
- * FILE: lib/rtl/bitmap.c
- * PURPOSE: Bitmap functions
- * PROGRAMMER: Eric Kohl
- */
-
-/* INCLUDES *****************************************************************/
-
-#include <rtl.h>
-
-#define NDEBUG
-#include <debug.h>
-
-/* MACROS *******************************************************************/
-
-/* Bits set from LSB to MSB; used as mask for runs < 8 bits */
-static const BYTE NTDLL_maskBits[8] = { 0, 1, 3, 7, 15, 31, 63, 127 };
-
-/* Number of set bits for each value of a nibble; used for counting */
-static const BYTE NTDLL_nibbleBitCount[16] = {
- 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4
-};
-
-/* First set bit in a nibble; used for determining least significant bit */
-static const BYTE NTDLL_leastSignificant[16] = {
- 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0
-};
-
-/* Last set bit in a nibble; used for determining most significant bit */
-static const signed char NTDLL_mostSignificant[16] = {
- -1, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3
-};
-
-/* PRIVATE FUNCTIONS *********************************************************/
-
-static
-int
-NTDLL_RunSortFn(const void *lhs,
- const void *rhs)
-{
- if (((const RTL_BITMAP_RUN*)lhs)->NumberOfBits > ((const
RTL_BITMAP_RUN*)rhs)->NumberOfBits)
- return -1;
- return 1;
-}
-
-static
-ULONG
-WINAPI
-NTDLL_FindRuns(PRTL_BITMAP lpBits,
- PRTL_BITMAP_RUN lpSeries,
- ULONG ulCount,
- BOOLEAN bLongest,
- ULONG (*fn)(PRTL_BITMAP,ULONG,PULONG))
-{
- BOOL bNeedSort = ulCount > 1 ? TRUE : FALSE;
- ULONG ulPos = 0, ulRuns = 0;
-
- if (!ulCount)
- return ~0U;
-
- while (ulPos < lpBits->SizeOfBitMap)
- {
- /* Find next set/clear run */
- ULONG ulSize, ulNextPos = fn(lpBits, ulPos, &ulSize);
-
- if (ulNextPos == ~0U)
- break;
-
- if (bLongest && ulRuns == ulCount)
- {
- /* Sort runs with shortest at end, if they are out of order */
- if (bNeedSort)
- qsort(lpSeries, ulRuns, sizeof(RTL_BITMAP_RUN), NTDLL_RunSortFn);
-
- /* Replace last run if this one is bigger */
- if (ulSize > lpSeries[ulRuns - 1].NumberOfBits)
- {
- lpSeries[ulRuns - 1].StartingIndex = ulNextPos;
- lpSeries[ulRuns - 1].NumberOfBits = ulSize;
-
- /* We need to re-sort the array, _if_ we didn't leave it sorted */
- if (ulRuns > 1 && ulSize > lpSeries[ulRuns - 2].NumberOfBits)
- bNeedSort = TRUE;
- }
- }
- else
- {
- /* Append to found runs */
- lpSeries[ulRuns].StartingIndex = ulNextPos;
- lpSeries[ulRuns].NumberOfBits = ulSize;
- ulRuns++;
-
- if (!bLongest && ulRuns == ulCount)
- break;
- }
- ulPos = ulNextPos + ulSize;
- }
- return ulRuns;
-}
-
-static
-ULONG
-NTDLL_FindSetRun(PRTL_BITMAP lpBits,
- ULONG ulStart,
- PULONG lpSize)
-{
- LPBYTE lpOut;
- ULONG ulFoundAt = 0, ulCount = 0;
-
- /* FIXME: It might be more efficient/cleaner to manipulate four bytes
- * at a time. But beware of the pointer arithmetics...
- */
- lpOut = ((BYTE*)lpBits->Buffer) + (ulStart >> 3u);
-
- while (1)
- {
- /* Check bits in first byte */
- const BYTE bMask = (0xff << (ulStart & 7)) & 0xff;
- const BYTE bFirst = *lpOut & bMask;
-
- if (bFirst)
- {
- /* Have a set bit in first byte */
- if (bFirst != bMask)
- {
- /* Not every bit is set */
- ULONG ulOffset;
-
- if (bFirst & 0x0f)
- ulOffset = NTDLL_leastSignificant[bFirst & 0x0f];
- else
- ulOffset = 4 + NTDLL_leastSignificant[bFirst >> 4];
- ulStart += ulOffset;
- ulFoundAt = ulStart;
- for (;ulOffset < 8; ulOffset++)
- {
- if (!(bFirst & (1 << ulOffset)))
- {
- *lpSize = ulCount;
- return ulFoundAt; /* Set from start, but not until the end */
- }
- ulCount++;
- ulStart++;
- }
- /* Set to the end - go on to count further bits */
- lpOut++;
- break;
- }
- /* every bit from start until the end of the byte is set */
- ulFoundAt = ulStart;
- ulCount = 8 - (ulStart & 7);
- ulStart = (ulStart & ~7u) + 8;
- lpOut++;
- break;
- }
- ulStart = (ulStart & ~7u) + 8;
- lpOut++;
- if (ulStart >= lpBits->SizeOfBitMap)
- return ~0U;
- }
-
- /* Count blocks of 8 set bits */
- while (*lpOut == 0xff)
- {
- ulCount += 8;
- ulStart += 8;
- if (ulStart >= lpBits->SizeOfBitMap)
- {
- *lpSize = ulCount - (ulStart - lpBits->SizeOfBitMap);
- return ulFoundAt;
- }
- lpOut++;
- }
-
- /* Count remaining contiguous bits, if any */
- if (*lpOut & 1)
- {
- ULONG ulOffset = 0;
-
- for (;ulOffset < 7u; ulOffset++)
- {
- if (!(*lpOut & (1 << ulOffset)))
- break;
- ulCount++;
- }
- }
- *lpSize = ulCount;
- return ulFoundAt;
-}
-
-static
-ULONG
-NTDLL_FindClearRun(PRTL_BITMAP lpBits,
- ULONG ulStart,
- PULONG lpSize)
-{
- LPBYTE lpOut;
- ULONG ulFoundAt = 0, ulCount = 0;
-
- /* FIXME: It might be more efficient/cleaner to manipulate four bytes
- * at a time. But beware of the pointer arithmetics...
- */
- lpOut = ((BYTE*)lpBits->Buffer) + (ulStart >> 3u);
-
- while (1)
- {
- /* Check bits in first byte */
- const BYTE bMask = (0xff << (ulStart & 7)) & 0xff;
- const BYTE bFirst = (~*lpOut) & bMask;
-
- if (bFirst)
- {
- /* Have a clear bit in first byte */
- if (bFirst != bMask)
- {
- /* Not every bit is clear */
- ULONG ulOffset;
-
- if (bFirst & 0x0f)
- ulOffset = NTDLL_leastSignificant[bFirst & 0x0f];
- else
- ulOffset = 4 + NTDLL_leastSignificant[bFirst >> 4];
- ulStart += ulOffset;
- ulFoundAt = ulStart;
- for (;ulOffset < 8; ulOffset++)
- {
- if (!(bFirst & (1 << ulOffset)))
- {
- *lpSize = ulCount;
- return ulFoundAt; /* Clear from start, but not until the end */
- }
- ulCount++;
- ulStart++;
- }
- /* Clear to the end - go on to count further bits */
- lpOut++;
- break;
- }
- /* Every bit from start until the end of the byte is clear */
- ulFoundAt = ulStart;
- ulCount = 8 - (ulStart & 7);
- ulStart = (ulStart & ~7u) + 8;
- lpOut++;
- break;
- }
- ulStart = (ulStart & ~7u) + 8;
- lpOut++;
- if (ulStart >= lpBits->SizeOfBitMap)
- return ~0U;
- }
-
- /* Count blocks of 8 clear bits */
- while (!*lpOut)
- {
- ulCount += 8;
- ulStart += 8;
- if (ulStart >= lpBits->SizeOfBitMap)
- {
- *lpSize = ulCount - (ulStart - lpBits->SizeOfBitMap);
- return ulFoundAt;
- }
- lpOut++;
- }
-
- /* Count remaining contiguous bits, if any */
- if (!(*lpOut & 1))
- {
- ULONG ulOffset = 0;
-
- for (;ulOffset < 7u; ulOffset++)
- {
- if (*lpOut & (1 << ulOffset))
- break;
- ulCount++;
- }
- }
- *lpSize = ulCount;
- return ulFoundAt;
-}
-
-/* FUNCTIONS ****************************************************************/
-
-/*
- * @implemented
- */
-VOID
-NTAPI
-RtlInitializeBitMap(IN PRTL_BITMAP BitMapHeader,
- IN PULONG BitMapBuffer,
- IN ULONG SizeOfBitMap)
-{
- /* Setup the bitmap header */
- BitMapHeader->SizeOfBitMap = SizeOfBitMap;
- BitMapHeader->Buffer = BitMapBuffer;
-}
-
-/*
- * @implemented
- */
-BOOLEAN
-NTAPI
-RtlAreBitsClear(IN PRTL_BITMAP BitMapHeader,
- IN ULONG StartingIndex,
- IN ULONG Length)
-{
- LPBYTE lpOut;
- ULONG ulRemainder;
-
- if (!BitMapHeader || !Length ||
- StartingIndex >= BitMapHeader->SizeOfBitMap ||
- Length > BitMapHeader->SizeOfBitMap - StartingIndex)
- return FALSE;
-
- /* FIXME: It might be more efficient/cleaner to manipulate four bytes
- * at a time. But beware of the pointer arithmetics...
- */
- lpOut = ((BYTE*)BitMapHeader->Buffer) + (StartingIndex >> 3u);
-
- /* Check bits in first byte, if StartingIndex isn't a byte boundary */
- if (StartingIndex & 7)
- {
- if (Length > 7)
- {
- /* Check from start bit to the end of the byte */
- if (*lpOut & ((0xff << (StartingIndex & 7)) & 0xff))
- return FALSE;
- lpOut++;
- Length -= (8 - (StartingIndex & 7));
- }
- else
- {
- /* Check from the start bit, possibly into the next byte also */
- USHORT initialWord = NTDLL_maskBits[Length] << (StartingIndex & 7);
-
- if (*lpOut & (initialWord & 0xff))
- return FALSE;
- if ((initialWord & 0xff00) && (lpOut[1] & (initialWord >>
8)))
- return FALSE;
- return TRUE;
- }
- }
-
- /* Check bits in blocks of 8 bytes */
- ulRemainder = Length & 7;
- Length >>= 3;
- while (Length--)
- {
- if (*lpOut++)
- return FALSE;
- }
-
- /* Check remaining bits, if any */
- if (ulRemainder && *lpOut & NTDLL_maskBits[ulRemainder])
- return FALSE;
- return TRUE;
-}
-
-
-/*
- * @implemented
- */
-BOOLEAN NTAPI
-RtlAreBitsSet(PRTL_BITMAP BitMapHeader,
- ULONG StartingIndex,
- ULONG Length)
-{
- LPBYTE lpOut;
- ULONG ulRemainder;
-
-
- if (!BitMapHeader || !Length ||
- StartingIndex >= BitMapHeader->SizeOfBitMap ||
- Length > BitMapHeader->SizeOfBitMap - StartingIndex)
- return FALSE;
-
- /* FIXME: It might be more efficient/cleaner to manipulate four bytes
- * at a time. But beware of the pointer arithmetics...
- */
- lpOut = ((BYTE*)BitMapHeader->Buffer) + (StartingIndex >> 3u);
-
- /* Check bits in first byte, if StartingIndex isn't a byte boundary */
- if (StartingIndex & 7)
- {
- if (Length > 7)
- {
- /* Check from start bit to the end of the byte */
- if ((*lpOut &
- ((0xff << (StartingIndex & 7))) & 0xff) != ((0xff <<
(StartingIndex & 7) & 0xff)))
- return FALSE;
- lpOut++;
- Length -= (8 - (StartingIndex & 7));
- }
- else
- {
- /* Check from the start bit, possibly into the next byte also */
- USHORT initialWord = NTDLL_maskBits[Length] << (StartingIndex & 7);
-
- if ((*lpOut & (initialWord & 0xff)) != (initialWord & 0xff))
- return FALSE;
- if ((initialWord & 0xff00) &&
- ((lpOut[1] & (initialWord >> 8)) != (initialWord >> 8)))
- return FALSE;
- return TRUE;
- }
- }
-
- /* Check bits in blocks of 8 bytes */
- ulRemainder = Length & 7;
- Length >>= 3;
- while (Length--)
- {
- if (*lpOut++ != 0xff)
- return FALSE;
- }
-
- /* Check remaining bits, if any */
- if (ulRemainder &&
- (*lpOut & NTDLL_maskBits[ulRemainder]) != NTDLL_maskBits[ulRemainder])
- return FALSE;
- return TRUE;
-}
-
-
-/*
- * @implemented
- */
-VOID NTAPI
-RtlClearAllBits(IN OUT PRTL_BITMAP BitMapHeader)
-{
- memset(BitMapHeader->Buffer, 0, ((BitMapHeader->SizeOfBitMap + 31) & ~31)
>> 3);
-}
-
-/*
- * @implemented
- */
-VOID
-NTAPI
-RtlClearBit(PRTL_BITMAP BitMapHeader,
- ULONG BitNumber)
-{
- PULONG Ptr;
-
- if (BitNumber >= BitMapHeader->SizeOfBitMap) return;
-
- Ptr = (PULONG)BitMapHeader->Buffer + (BitNumber / 32);
- *Ptr &= ~(1 << (BitNumber % 32));
-}
-
-/*
- * @implemented
- */
-VOID
-NTAPI
-RtlClearBits(IN PRTL_BITMAP BitMapHeader,
- IN ULONG StartingIndex,
- IN ULONG NumberToClear)
-{
- LPBYTE lpOut;
-
- if (!BitMapHeader || !NumberToClear ||
- StartingIndex >= BitMapHeader->SizeOfBitMap ||
- NumberToClear > BitMapHeader->SizeOfBitMap - StartingIndex)
- return;
-
- /* FIXME: It might be more efficient/cleaner to manipulate four bytes
- * at a time. But beware of the pointer arithmetics...
- */
- lpOut = ((BYTE*)BitMapHeader->Buffer) + (StartingIndex >> 3u);
-
- /* Clear bits in first byte, if StartingIndex isn't a byte boundary */
- if (StartingIndex & 7)
- {
- if (NumberToClear > 7)
- {
- /* Clear from start bit to the end of the byte */
- *lpOut++ &= ~(0xff << (StartingIndex & 7));
- NumberToClear -= (8 - (StartingIndex & 7));
- }
- else
- {
- /* Clear from the start bit, possibly into the next byte also */
- USHORT initialWord = ~(NTDLL_maskBits[NumberToClear] << (StartingIndex &
7));
-
- *lpOut++ &= (initialWord & 0xff);
- *lpOut &= (initialWord >> 8);
- return;
- }
- }
-
- /* Clear bits (in blocks of 8) on whole byte boundaries */
- if (NumberToClear >> 3)
- {
- memset(lpOut, 0, NumberToClear >> 3);
- lpOut = lpOut + (NumberToClear >> 3);
- }
-
- /* Clear remaining bits, if any */
- if (NumberToClear & 0x7)
- *lpOut &= ~NTDLL_maskBits[NumberToClear & 0x7];
-}
-
-
-/*
- * @implemented
- */
-ULONG NTAPI
-RtlFindClearBits(PRTL_BITMAP BitMapHeader,
- ULONG NumberToFind,
- ULONG HintIndex)
-{
- ULONG ulPos, ulEnd;
-
- if (!BitMapHeader || !NumberToFind || NumberToFind > BitMapHeader->SizeOfBitMap)
- return ~0U;
-
- ulEnd = BitMapHeader->SizeOfBitMap;
-
- if (HintIndex + NumberToFind > BitMapHeader->SizeOfBitMap)
- HintIndex = 0;
-
- ulPos = HintIndex;
-
- while (ulPos < ulEnd)
- {
- /* FIXME: This could be made a _lot_ more efficient */
- if (RtlAreBitsClear(BitMapHeader, ulPos, NumberToFind))
- return ulPos;
-
- /* Start from the beginning if we hit the end and started from HintIndex */
- if (ulPos == ulEnd - 1 && HintIndex)
- {
- ulEnd = HintIndex;
- ulPos = HintIndex = 0;
- }
- else
- ulPos++;
- }
- return ~0U;
-}
-
-
-
-
-
-
-
-/*
- * @implemented
- */
-ULONG NTAPI
-RtlFindClearRuns(PRTL_BITMAP BitMapHeader,
- PRTL_BITMAP_RUN RunArray,
- ULONG SizeOfRunArray,
- BOOLEAN LocateLongestRuns)
-{
- return NTDLL_FindRuns(BitMapHeader, RunArray, SizeOfRunArray, LocateLongestRuns,
NTDLL_FindClearRun);
-}
-
-
-/*
- * @unimplemented
- */
-ULONG NTAPI
-RtlFindLastBackwardRunClear(IN PRTL_BITMAP BitMapHeader,
- IN ULONG FromIndex,
- IN PULONG StartingRunIndex)
-{
- UNIMPLEMENTED;
- return 0;
-}
-
-/*
- * @implemented
- */
-ULONG NTAPI
-RtlFindNextForwardRunClear(IN PRTL_BITMAP BitMapHeader,
- IN ULONG FromIndex,
- IN PULONG StartingRunIndex)
-{
- ULONG ulSize = 0;
-
- if (BitMapHeader && FromIndex < BitMapHeader->SizeOfBitMap &&
StartingRunIndex)
- *StartingRunIndex = NTDLL_FindClearRun(BitMapHeader, FromIndex, &ulSize);
-
- return ulSize;
-}
-
-/*
- * @implemented
- */
-ULONG NTAPI
-RtlFindFirstRunSet(IN PRTL_BITMAP BitMapHeader,
- IN PULONG StartingIndex)
-{
- ULONG Size;
- ULONG Index;
- ULONG Count;
- PULONG Ptr;
- ULONG Mask;
-
- Size = BitMapHeader->SizeOfBitMap;
- if (*StartingIndex > Size)
- {
- *StartingIndex = (ULONG)-1;
- return 0;
- }
-
- Index = *StartingIndex;
- Ptr = (PULONG)BitMapHeader->Buffer + (Index / 32);
- Mask = 1 << (Index & 0x1F);
-
- /* Skip clear bits */
- for (; Index < Size && ~*Ptr & Mask; Index++)
- {
- Mask <<= 1;
-
- if (Mask == 0)
- {
- Mask = 1;
- Ptr++;
- }
- }
-
- /* Return index of first set bit */
- if (Index >= Size)
- {
- *StartingIndex = (ULONG)-1;
- return 0;
- }
- else
- {
- *StartingIndex = Index;
- }
-
- /* Count set bits */
- for (Count = 0; Index < Size && *Ptr & Mask; Index++)
- {
- Count++;
- Mask <<= 1;
-
- if (Mask == 0)
- {
- Mask = 1;
- Ptr++;
- }
- }
-
- return Count;
-}
-
-
-/*
- * @implemented
- */
-ULONG NTAPI
-RtlFindLongestRunClear(PRTL_BITMAP BitMapHeader,
- PULONG StartingIndex)
-{
- RTL_BITMAP_RUN br;
-
- if (RtlFindClearRuns(BitMapHeader, &br, 1, TRUE) == 1)
- {
- if (StartingIndex)
- *StartingIndex = br.StartingIndex;
- return br.NumberOfBits;
- }
- return 0;
-}
-
-
-/*
- * @implemented
- */
-ULONG NTAPI
-RtlFindLongestRunSet(PRTL_BITMAP BitMapHeader,
- PULONG StartingIndex)
-{
- RTL_BITMAP_RUN br;
-
- if (NTDLL_FindRuns(BitMapHeader, &br, 1, TRUE, NTDLL_FindSetRun) == 1)
- {
- if (StartingIndex)
- *StartingIndex = br.StartingIndex;
- return br.NumberOfBits;
- }
- return 0;
-}
-
-
-/*
- * @implemented
- */
-ULONG NTAPI
-RtlFindSetBits(PRTL_BITMAP BitMapHeader,
- ULONG NumberToFind,
- ULONG HintIndex)
-{
- ULONG ulPos, ulEnd;
-
- if (!BitMapHeader || !NumberToFind || NumberToFind > BitMapHeader->SizeOfBitMap)
- return ~0U;
-
- ulEnd = BitMapHeader->SizeOfBitMap;
-
- if (HintIndex + NumberToFind > BitMapHeader->SizeOfBitMap)
- HintIndex = 0;
-
- ulPos = HintIndex;
-
- while (ulPos < ulEnd)
- {
- /* FIXME: This could be made a _lot_ more efficient */
- if (RtlAreBitsSet(BitMapHeader, ulPos, NumberToFind))
- return ulPos;
-
- /* Start from the beginning if we hit the end and had a hint */
- if (ulPos == ulEnd - 1 && HintIndex)
- {
- ulEnd = HintIndex;
- ulPos = HintIndex = 0;
- }
- else
- ulPos++;
- }
- return ~0U;
-}
-
-
-/*
- * @implemented
- */
-ULONG NTAPI
-RtlFindSetBitsAndClear(PRTL_BITMAP BitMapHeader,
- ULONG NumberToFind,
- ULONG HintIndex)
-{
- ULONG ulPos;
-
- ulPos = RtlFindSetBits(BitMapHeader, NumberToFind, HintIndex);
- if (ulPos != ~0U)
- RtlClearBits(BitMapHeader, ulPos, NumberToFind);
- return ulPos;
-}
-
-
-
-
-
-/*
- * @implemented
- */
-ULONG NTAPI
-RtlNumberOfSetBits(PRTL_BITMAP BitMapHeader)
-{
- ULONG ulSet = 0;
-
- if (BitMapHeader)
- {
- LPBYTE lpOut = (BYTE *)BitMapHeader->Buffer;
- ULONG Length, ulRemainder;
- BYTE bMasked;
-
- Length = BitMapHeader->SizeOfBitMap >> 3;
- ulRemainder = BitMapHeader->SizeOfBitMap & 0x7;
-
- while (Length--)
- {
- ulSet += NTDLL_nibbleBitCount[*lpOut >> 4];
- ulSet += NTDLL_nibbleBitCount[*lpOut & 0xf];
- lpOut++;
- }
-
- bMasked = *lpOut & NTDLL_maskBits[ulRemainder];
- ulSet += NTDLL_nibbleBitCount[bMasked >> 4];
- ulSet += NTDLL_nibbleBitCount[bMasked & 0xf];
- }
- return ulSet;
-}
-
-
-/*
- * @implemented
- */
-VOID NTAPI
-RtlSetAllBits(IN OUT PRTL_BITMAP BitMapHeader)
-{
- memset(BitMapHeader->Buffer, 0xff, ((BitMapHeader->SizeOfBitMap + 31) & ~31)
>> 3);
-}
-
-
-/*
- * @implemented
- */
-VOID NTAPI
-RtlSetBit(PRTL_BITMAP BitMapHeader,
- ULONG BitNumber)
-{
- PULONG Ptr;
-
- if (BitNumber >= BitMapHeader->SizeOfBitMap)
- return;
-
- Ptr = (PULONG)BitMapHeader->Buffer + (BitNumber / 32);
-
- *Ptr |= (1 << (BitNumber % 32));
-}
-
-
-/*
- * @implemented
- */
-VOID NTAPI
-RtlSetBits(PRTL_BITMAP BitMapHeader,
- ULONG StartingIndex,
- ULONG NumberToSet)
-{
- LPBYTE lpOut;
-
- if (!BitMapHeader || !NumberToSet ||
- StartingIndex >= BitMapHeader->SizeOfBitMap ||
- NumberToSet > BitMapHeader->SizeOfBitMap - StartingIndex)
- return;
-
- /* FIXME: It might be more efficient/cleaner to manipulate four bytes
- * at a time. But beware of the pointer arithmetics...
- */
- lpOut = ((BYTE*)BitMapHeader->Buffer) + (StartingIndex >> 3u);
-
- /* Set bits in first byte, if StartingIndex isn't a byte boundary */
- if (StartingIndex & 7)
- {
- if (NumberToSet > 7)
- {
- /* Set from start bit to the end of the byte */
- *lpOut++ |= 0xff << (StartingIndex & 7);
- NumberToSet -= (8 - (StartingIndex & 7));
- }
- else
- {
- /* Set from the start bit, possibly into the next byte also */
- USHORT initialWord = NTDLL_maskBits[NumberToSet] << (StartingIndex & 7);
-
- *lpOut++ |= (initialWord & 0xff);
- *lpOut |= (initialWord >> 8);
- return;
- }
- }
-
- /* Set bits up to complete byte count */
- if (NumberToSet >> 3)
- {
- memset(lpOut, 0xff, NumberToSet >> 3);
- lpOut = lpOut + (NumberToSet >> 3);
- }
-
- /* Set remaining bits, if any */
- *lpOut |= NTDLL_maskBits[NumberToSet & 0x7];
-}
-
-
-/*
- * @implemented
- */
-BOOLEAN NTAPI
-RtlTestBit(PRTL_BITMAP BitMapHeader,
- ULONG BitNumber)
-{
- PULONG Ptr;
-
- if (BitNumber >= BitMapHeader->SizeOfBitMap)
- return FALSE;
-
- Ptr = (PULONG)BitMapHeader->Buffer + (BitNumber / 32);
-
- return (*Ptr & (1 << (BitNumber % 32)));
-}
-
-/*
- * @implemented
- */
-ULONG NTAPI
-RtlFindFirstRunClear(PRTL_BITMAP BitMapHeader,
- PULONG StartingIndex)
-{
- return RtlFindNextForwardRunClear(BitMapHeader, 0, StartingIndex);
-}
-
-/*
- * @implemented
- */
-ULONG NTAPI
-RtlNumberOfClearBits(PRTL_BITMAP BitMapHeader)
-{
-
- if (BitMapHeader)
- return BitMapHeader->SizeOfBitMap - RtlNumberOfSetBits(BitMapHeader);
- return 0;
-}
-
-/*
- * @implemented
- */
-ULONG NTAPI
-RtlFindClearBitsAndSet(PRTL_BITMAP BitMapHeader,
- ULONG NumberToFind,
- ULONG HintIndex)
-{
- ULONG ulPos;
-
- ulPos = RtlFindClearBits(BitMapHeader, NumberToFind, HintIndex);
- if (ulPos != ~0U)
- RtlSetBits(BitMapHeader, ulPos, NumberToFind);
- return ulPos;
-}
-
-/*
- * @implemented
- */
-CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG ulLong)
-{
- signed char ret = 32;
- DWORD dw;
-
- if (!(dw = (ulLong >> 32)))
- {
- ret = 0;
- dw = (DWORD)ulLong;
- }
- if (dw & 0xffff0000)
- {
- dw >>= 16;
- ret += 16;
- }
- if (dw & 0xff00)
- {
- dw >>= 8;
- ret += 8;
- }
- if (dw & 0xf0)
- {
- dw >>= 4;
- ret += 4;
- }
- return ret + NTDLL_mostSignificant[dw];
-}
-
-/*
- * @implemented
- */
-CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG ulLong)
-{
- signed char ret = 0;
- DWORD dw;
-
- if (!(dw = (DWORD)ulLong))
- {
- ret = 32;
- if (!(dw = ulLong >> 32)) return -1;
- }
- if (!(dw & 0xffff))
- {
- dw >>= 16;
- ret += 16;
- }
- if (!(dw & 0xff))
- {
- dw >>= 8;
- ret += 8;
- }
- if (!(dw & 0x0f))
- {
- dw >>= 4;
- ret += 4;
- }
- return ret + NTDLL_leastSignificant[dw & 0x0f];
-}
-
-/* EOF */
Modified: branches/powerpc/reactos/tools/ppc.lost+found/link-ntoskrnl
URL:
http://svn.reactos.org/svn/reactos/branches/powerpc/reactos/tools/ppc.lost%…
==============================================================================
--- branches/powerpc/reactos/tools/ppc.lost+found/link-ntoskrnl (original)
+++ branches/powerpc/reactos/tools/ppc.lost+found/link-ntoskrnl Mon Sep 4 10:38:37 2006
@@ -1,3 +1,174 @@
#!/bin/sh -xv
-reactos-powerpc-gcc --begin-group -v -Wl,--subsystem,native -Wl,--entry,NtProcessStartup
-Wl,--image-base,0x80000000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000
-nostartfiles -shared ntoskrnl.temp.exp -o output-ppc/ntoskrnl/ntoskrnl.exe
obj-ppc/ntoskrnl/ke/powerpc/main_asm.o obj-ppc/ntoskrnl/ke/apc.o obj-ppc/ntoskrnl/ke/bug.o
obj-ppc/ntoskrnl/ke/clock.o obj-ppc/ntoskrnl/ke/device.o obj-ppc/ntoskrnl/ke/dpc.o
obj-ppc/ntoskrnl/ke/event.o obj-ppc/ntoskrnl/ke/exception.o obj-ppc/ntoskrnl/ke/gate.o
obj-ppc/ntoskrnl/ke/gmutex.o obj-ppc/ntoskrnl/ke/ipi.o obj-ppc/ntoskrnl/ke/kqueue.o
obj-ppc/ntoskrnl/ke/kthread.o obj-ppc/ntoskrnl/ke/main.o obj-ppc/ntoskrnl/ke/mutex.o
obj-ppc/ntoskrnl/ke/process.o obj-ppc/ntoskrnl/ke/profile.o obj-ppc/ntoskrnl/ke/queue.o
obj-ppc/ntoskrnl/ke/sem.o obj-ppc/ntoskrnl/ke/spinlock.o obj-ppc/ntoskrnl/ke/timer.o
obj-ppc/ntoskrnl/ke/usercall.o obj-ppc/ntoskrnl/ke/wait.o obj-ppc/ntoskrnl/cc/cacheman.o
obj-ppc/ntoskrnl/cc/copy.o obj-ppc/ntoskrnl/cc/fs.o obj-ppc/ntoskrnl/cc/mdl.o
obj-ppc/ntoskrnl/cc/pin.o obj-ppc/ntoskrnl/cc/view.o obj-ppc/ntoskrnl/cm/import.o
obj-ppc/ntoskrnl/cm/ntfunc.o obj-ppc/ntoskrnl/cm/regfile.o obj-ppc/ntoskrnl/cm/registry.o
obj-ppc/ntoskrnl/cm/regobj.o obj-ppc/ntoskrnl/dbgk/dbgkutil.o
obj-ppc/ntoskrnl/dbgk/debug.o obj-ppc/ntoskrnl/ex/atom.o obj-ppc/ntoskrnl/ex/callback.o
obj-ppc/ntoskrnl/ex/dbgctrl.o obj-ppc/ntoskrnl/ex/error.o obj-ppc/ntoskrnl/ex/event.o
obj-ppc/ntoskrnl/ex/evtpair.o obj-ppc/ntoskrnl/ex/fmutex.o obj-ppc/ntoskrnl/ex/handle.o
obj-ppc/ntoskrnl/ex/init.o obj-ppc/ntoskrnl/ex/lookas.o obj-ppc/ntoskrnl/ex/mutant.o
obj-ppc/ntoskrnl/ex/power.o obj-ppc/ntoskrnl/ex/pushlock.o obj-ppc/ntoskrnl/ex/profile.o
obj-ppc/ntoskrnl/ex/resource.o obj-ppc/ntoskrnl/ex/rundown.o obj-ppc/ntoskrnl/ex/sem.o
obj-ppc/ntoskrnl/ex/sysinfo.o obj-ppc/ntoskrnl/ex/time.o obj-ppc/ntoskrnl/ex/timer.o
obj-ppc/ntoskrnl/ex/uuid.o obj-ppc/ntoskrnl/ex/win32k.o obj-ppc/ntoskrnl/ex/work.o
obj-ppc/ntoskrnl/ex/zone.o obj-ppc/ntoskrnl/ex/zw.o obj-ppc/ntoskrnl/fs/context.o
obj-ppc/ntoskrnl/fs/fastio.o obj-ppc/ntoskrnl/fs/filelock.o obj-ppc/ntoskrnl/fs/mcb.o
obj-ppc/ntoskrnl/fs/name.o obj-ppc/ntoskrnl/fs/notify.o obj-ppc/ntoskrnl/fs/oplock.o
obj-ppc/ntoskrnl/fs/pool.o obj-ppc/ntoskrnl/fs/tunnel.o obj-ppc/ntoskrnl/fs/unc.o
obj-ppc/ntoskrnl/fs/util.o obj-ppc/ntoskrnl/inbv/inbv.o obj-ppc/ntoskrnl/io/adapter.o
obj-ppc/ntoskrnl/io/arcname.o obj-ppc/ntoskrnl/io/bootlog.o
obj-ppc/ntoskrnl/io/controller.o obj-ppc/ntoskrnl/io/device.o
obj-ppc/ntoskrnl/io/deviface.o obj-ppc/ntoskrnl/io/disk.o obj-ppc/ntoskrnl/io/driver.o
obj-ppc/ntoskrnl/io/efi.o obj-ppc/ntoskrnl/io/error.o obj-ppc/ntoskrnl/io/event.o
obj-ppc/ntoskrnl/io/fs.o obj-ppc/ntoskrnl/io/iocomp.o obj-ppc/ntoskrnl/io/iomgr.o
obj-ppc/ntoskrnl/io/iowork.o obj-ppc/ntoskrnl/io/irp.o obj-ppc/ntoskrnl/io/irq.o
obj-ppc/ntoskrnl/io/mdl.o obj-ppc/ntoskrnl/io/plugplay.o obj-ppc/ntoskrnl/io/pnpdma.o
obj-ppc/ntoskrnl/io/pnpmgr.o obj-ppc/ntoskrnl/io/pnpnotify.o
obj-ppc/ntoskrnl/io/pnpreport.o obj-ppc/ntoskrnl/io/pnproot.o obj-ppc/ntoskrnl/io/rawfs.o
obj-ppc/ntoskrnl/io/remlock.o obj-ppc/ntoskrnl/io/resource.o obj-ppc/ntoskrnl/io/share.o
obj-ppc/ntoskrnl/io/symlink.o obj-ppc/ntoskrnl/io/timer.o obj-ppc/ntoskrnl/io/vpb.o
obj-ppc/ntoskrnl/io/wmi.o obj-ppc/ntoskrnl/io/file.o obj-ppc/ntoskrnl/kd/wrappers/bochs.o
obj-ppc/ntoskrnl/kd/wrappers/gdbstub.o obj-ppc/ntoskrnl/kd/kdinit.o
obj-ppc/ntoskrnl/kd/kdio.o obj-ppc/ntoskrnl/kd/kdmain.o obj-ppc/ntoskrnl/ldr/loader.o
obj-ppc/ntoskrnl/ldr/rtl.o obj-ppc/ntoskrnl/lpc/close.o obj-ppc/ntoskrnl/lpc/complete.o
obj-ppc/ntoskrnl/lpc/connect.o obj-ppc/ntoskrnl/lpc/create.o obj-ppc/ntoskrnl/lpc/listen.o
obj-ppc/ntoskrnl/lpc/port.o obj-ppc/ntoskrnl/lpc/query.o obj-ppc/ntoskrnl/lpc/queue.o
obj-ppc/ntoskrnl/lpc/receive.o obj-ppc/ntoskrnl/lpc/reply.o obj-ppc/ntoskrnl/lpc/send.o
obj-ppc/ntoskrnl/mm/anonmem.o obj-ppc/ntoskrnl/mm/aspace.o obj-ppc/ntoskrnl/mm/balance.o
obj-ppc/ntoskrnl/mm/cont.o obj-ppc/ntoskrnl/mm/drvlck.o obj-ppc/ntoskrnl/mm/freelist.o
obj-ppc/ntoskrnl/mm/iospace.o obj-ppc/ntoskrnl/mm/kmap.o obj-ppc/ntoskrnl/mm/marea.o
obj-ppc/ntoskrnl/mm/mdl.o obj-ppc/ntoskrnl/mm/mm.o obj-ppc/ntoskrnl/mm/process.o
obj-ppc/ntoskrnl/mm/mminit.o obj-ppc/ntoskrnl/mm/mpw.o obj-ppc/ntoskrnl/mm/ncache.o
obj-ppc/ntoskrnl/mm/npool.o obj-ppc/ntoskrnl/mm/pagefile.o obj-ppc/ntoskrnl/mm/pageop.o
obj-ppc/ntoskrnl/mm/pager.o obj-ppc/ntoskrnl/mm/pagfault.o obj-ppc/ntoskrnl/mm/paging.o
obj-ppc/ntoskrnl/mm/pe.o obj-ppc/ntoskrnl/mm/physical.o obj-ppc/ntoskrnl/mm/pool.o
obj-ppc/ntoskrnl/mm/ppool.o obj-ppc/ntoskrnl/mm/region.o obj-ppc/ntoskrnl/mm/rmap.o
obj-ppc/ntoskrnl/mm/section.o obj-ppc/ntoskrnl/mm/verifier.o obj-ppc/ntoskrnl/mm/virtual.o
obj-ppc/ntoskrnl/mm/wset.o obj-ppc/ntoskrnl/mm/elf32.o obj-ppc/ntoskrnl/mm/elf64.o
obj-ppc/ntoskrnl/ob/obdir.o obj-ppc/ntoskrnl/ob/obinit.o obj-ppc/ntoskrnl/ob/obhandle.o
obj-ppc/ntoskrnl/ob/obname.o obj-ppc/ntoskrnl/ob/oblife.o obj-ppc/ntoskrnl/ob/obref.o
obj-ppc/ntoskrnl/ob/sdcache.o obj-ppc/ntoskrnl/ob/symlink.o obj-ppc/ntoskrnl/po/power.o
obj-ppc/ntoskrnl/ps/debug.o obj-ppc/ntoskrnl/ps/idle.o obj-ppc/ntoskrnl/ps/job.o
obj-ppc/ntoskrnl/ps/kill.o obj-ppc/ntoskrnl/ps/locale.o obj-ppc/ntoskrnl/ps/notify.o
obj-ppc/ntoskrnl/ps/process.o obj-ppc/ntoskrnl/ps/psmgr.o obj-ppc/ntoskrnl/ps/query.o
obj-ppc/ntoskrnl/ps/quota.o obj-ppc/ntoskrnl/ps/security.o obj-ppc/ntoskrnl/ps/suspend.o
obj-ppc/ntoskrnl/ps/thread.o obj-ppc/ntoskrnl/ps/win32.o obj-ppc/ntoskrnl/rtl/libsupp.o
obj-ppc/ntoskrnl/rtl/misc.o obj-ppc/ntoskrnl/rtl/nls.o obj-ppc/ntoskrnl/rtl/regio.o
obj-ppc/ntoskrnl/rtl/strtok.o obj-ppc/ntoskrnl/se/access.o obj-ppc/ntoskrnl/se/acl.o
obj-ppc/ntoskrnl/se/audit.o obj-ppc/ntoskrnl/se/lsa.o obj-ppc/ntoskrnl/se/luid.o
obj-ppc/ntoskrnl/se/priv.o obj-ppc/ntoskrnl/se/sd.o obj-ppc/ntoskrnl/se/semgr.o
obj-ppc/ntoskrnl/se/sid.o obj-ppc/ntoskrnl/se/token.o obj-ppc/ntoskrnl/ntoskrnl.coff
obj-ppc/ntoskrnl/kdbg/kdb_symbols.o obj-ppc/lib/drivers/csq/csq.a obj-ppc/hal/hal/libhal.a
obj-ppc/lib/kjs/kjs.a obj-ppc/lib/pseh/pseh.a obj-ppc/lib/rtl/rtl.a
obj-ppc/lib/rossym/rossym.a obj-ppc/lib/string/string.a obj-ppc/lib/wdmguid/wdmguid.a
-nostartfiles -nostdlib -lgcc -g --end-group
+reactos-powerpc-ld \
+ -v \
+ --subsystem native \
+ --entry NtProcessStartup \
+ --image-base 0x80000000 \
+ --file-alignment 0x1000 \
+ --section-alignment 0x1000 \
+ -nostartfiles -shared \
+ ntoskrnl.temp.exp -o output-ppc/ntoskrnl/ntoskrnl.exe \
+ obj-ppc/ntoskrnl/ke/powerpc/main_asm.o \
+ obj-ppc/ntoskrnl/ke/apc.o \
+ obj-ppc/ntoskrnl/ke/bug.o \
+ obj-ppc/ntoskrnl/ke/clock.o \
+ obj-ppc/ntoskrnl/ke/device.o \
+ obj-ppc/ntoskrnl/ke/dpc.o \
+ obj-ppc/ntoskrnl/ke/event.o \
+ obj-ppc/ntoskrnl/ke/exception.o \
+ obj-ppc/ntoskrnl/ke/gate.o \
+ obj-ppc/ntoskrnl/ke/gmutex.o \
+ obj-ppc/ntoskrnl/ke/ipi.o \
+ obj-ppc/ntoskrnl/ke/kqueue.o \
+ obj-ppc/ntoskrnl/ke/kthread.o \
+ obj-ppc/ntoskrnl/ke/mutex.o \
+ obj-ppc/ntoskrnl/ke/process.o \
+ obj-ppc/ntoskrnl/ke/profile.o \
+ obj-ppc/ntoskrnl/ke/queue.o \
+ obj-ppc/ntoskrnl/ke/sem.o \
+ obj-ppc/ntoskrnl/ke/spinlock.o \
+ obj-ppc/ntoskrnl/ke/timer.o \
+ obj-ppc/ntoskrnl/ke/usercall.o \
+ obj-ppc/ntoskrnl/ke/wait.o \
+ obj-ppc/ntoskrnl/cc/cacheman.o \
+ obj-ppc/ntoskrnl/cc/copy.o \
+ obj-ppc/ntoskrnl/cc/fs.o \
+ obj-ppc/ntoskrnl/cc/mdl.o \
+ obj-ppc/ntoskrnl/cc/pin.o \
+ obj-ppc/ntoskrnl/cc/view.o \
+ obj-ppc/ntoskrnl/cm/import.o \
+ obj-ppc/ntoskrnl/cm/ntfunc.o \
+ obj-ppc/ntoskrnl/cm/regfile.o \
+ obj-ppc/ntoskrnl/cm/registry.o \
+ obj-ppc/ntoskrnl/cm/regobj.o \
+ obj-ppc/ntoskrnl/dbgk/dbgkutil.o \
+ obj-ppc/ntoskrnl/dbgk/debug.o \
+ obj-ppc/ntoskrnl/ex/atom.o \
+ obj-ppc/ntoskrnl/ex/callback.o \
+ obj-ppc/ntoskrnl/ex/dbgctrl.o \
+ obj-ppc/ntoskrnl/ex/error.o \
+ obj-ppc/ntoskrnl/ex/event.o \
+ obj-ppc/ntoskrnl/ex/evtpair.o \
+ obj-ppc/ntoskrnl/ex/fmutex.o \
+ obj-ppc/ntoskrnl/ex/handle.o \
+ obj-ppc/ntoskrnl/ex/init.o \
+ obj-ppc/ntoskrnl/ex/lookas.o \
+ obj-ppc/ntoskrnl/ex/mutant.o \
+ obj-ppc/ntoskrnl/ex/power.o \
+ obj-ppc/ntoskrnl/ex/pushlock.o \
+ obj-ppc/ntoskrnl/ex/profile.o \
+ obj-ppc/ntoskrnl/ex/resource.o \
+ obj-ppc/ntoskrnl/ex/rundown.o \
+ obj-ppc/ntoskrnl/ex/sem.o \
+ obj-ppc/ntoskrnl/ex/sysinfo.o \
+ obj-ppc/ntoskrnl/ex/time.o \
+ obj-ppc/ntoskrnl/ex/timer.o \
+ obj-ppc/ntoskrnl/ex/uuid.o \
+ obj-ppc/ntoskrnl/ex/win32k.o \
+ obj-ppc/ntoskrnl/ex/work.o \
+ obj-ppc/ntoskrnl/ex/zone.o \
+ obj-ppc/ntoskrnl/ex/zw.o \
+ obj-ppc/ntoskrnl/fs/context.o \
+ obj-ppc/ntoskrnl/fs/fastio.o \
+ obj-ppc/ntoskrnl/fs/filelock.o \
+ obj-ppc/ntoskrnl/fs/mcb.o \
+ obj-ppc/ntoskrnl/fs/name.o \
+ obj-ppc/ntoskrnl/fs/notify.o \
+ obj-ppc/ntoskrnl/fs/oplock.o \
+ obj-ppc/ntoskrnl/fs/pool.o \
+ obj-ppc/ntoskrnl/fs/tunnel.o \
+ obj-ppc/ntoskrnl/fs/unc.o \
+ obj-ppc/ntoskrnl/fs/util.o \
+ obj-ppc/ntoskrnl/inbv/inbv.o \
+ obj-ppc/ntoskrnl/io/iomgr/*.o \
+ obj-ppc/ntoskrnl/io/pnpmgr/*.o \
+ obj-ppc/ntoskrnl/kd/wrappers/bochs.o \
+ obj-ppc/ntoskrnl/kd/wrappers/gdbstub.o \
+ obj-ppc/ntoskrnl/kd/kdinit.o \
+ obj-ppc/ntoskrnl/kd/kdio.o \
+ obj-ppc/ntoskrnl/kd/kdmain.o \
+ obj-ppc/ntoskrnl/ldr/loader.o \
+ obj-ppc/ntoskrnl/ldr/rtl.o \
+ obj-ppc/ntoskrnl/lpc/close.o \
+ obj-ppc/ntoskrnl/lpc/complete.o \
+ obj-ppc/ntoskrnl/lpc/connect.o \
+ obj-ppc/ntoskrnl/lpc/create.o \
+ obj-ppc/ntoskrnl/lpc/listen.o \
+ obj-ppc/ntoskrnl/lpc/port.o \
+ obj-ppc/ntoskrnl/lpc/query.o \
+ obj-ppc/ntoskrnl/lpc/queue.o \
+ obj-ppc/ntoskrnl/lpc/receive.o \
+ obj-ppc/ntoskrnl/lpc/reply.o \
+ obj-ppc/ntoskrnl/lpc/send.o \
+ obj-ppc/ntoskrnl/mm/anonmem.o \
+ obj-ppc/ntoskrnl/mm/aspace.o \
+ obj-ppc/ntoskrnl/mm/balance.o \
+ obj-ppc/ntoskrnl/mm/cont.o \
+ obj-ppc/ntoskrnl/mm/drvlck.o \
+ obj-ppc/ntoskrnl/mm/freelist.o \
+ obj-ppc/ntoskrnl/mm/iospace.o \
+ obj-ppc/ntoskrnl/mm/kmap.o \
+ obj-ppc/ntoskrnl/mm/marea.o \
+ obj-ppc/ntoskrnl/mm/mdl.o \
+ obj-ppc/ntoskrnl/mm/mm.o \
+ obj-ppc/ntoskrnl/mm/process.o \
+ obj-ppc/ntoskrnl/mm/mminit.o \
+ obj-ppc/ntoskrnl/mm/mpw.o \
+ obj-ppc/ntoskrnl/mm/ncache.o \
+ obj-ppc/ntoskrnl/mm/npool.o \
+ obj-ppc/ntoskrnl/mm/pagefile.o \
+ obj-ppc/ntoskrnl/mm/pageop.o \
+ obj-ppc/ntoskrnl/mm/pager.o \
+ obj-ppc/ntoskrnl/mm/pagfault.o \
+ obj-ppc/ntoskrnl/mm/paging.o \
+ obj-ppc/ntoskrnl/mm/pe.o \
+ obj-ppc/ntoskrnl/mm/physical.o \
+ obj-ppc/ntoskrnl/mm/pool.o \
+ obj-ppc/ntoskrnl/mm/ppool.o \
+ obj-ppc/ntoskrnl/mm/region.o \
+ obj-ppc/ntoskrnl/mm/rmap.o \
+ obj-ppc/ntoskrnl/mm/section.o \
+ obj-ppc/ntoskrnl/mm/verifier.o \
+ obj-ppc/ntoskrnl/mm/virtual.o \
+ obj-ppc/ntoskrnl/mm/wset.o \
+ obj-ppc/ntoskrnl/mm/elf32.o \
+ obj-ppc/ntoskrnl/mm/elf64.o \
+ obj-ppc/ntoskrnl/ob/obdir.o \
+ obj-ppc/ntoskrnl/ob/obinit.o \
+ obj-ppc/ntoskrnl/ob/obhandle.o \
+ obj-ppc/ntoskrnl/ob/obname.o \
+ obj-ppc/ntoskrnl/ob/oblife.o \
+ obj-ppc/ntoskrnl/ob/obref.o \
+ obj-ppc/ntoskrnl/ob/sdcache.o \
+ obj-ppc/ntoskrnl/ob/symlink.o \
+ obj-ppc/ntoskrnl/po/power.o \
+ obj-ppc/ntoskrnl/ps/*.o \
+ obj-ppc/ntoskrnl/rtl/libsupp.o \
+ obj-ppc/ntoskrnl/rtl/misc.o \
+ obj-ppc/ntoskrnl/rtl/nls.o \
+ obj-ppc/ntoskrnl/rtl/regio.o \
+ obj-ppc/ntoskrnl/rtl/strtok.o \
+ obj-ppc/ntoskrnl/se/access.o \
+ obj-ppc/ntoskrnl/se/acl.o \
+ obj-ppc/ntoskrnl/se/audit.o \
+ obj-ppc/ntoskrnl/se/lsa.o \
+ obj-ppc/ntoskrnl/se/luid.o \
+ obj-ppc/ntoskrnl/se/priv.o \
+ obj-ppc/ntoskrnl/se/sd.o \
+ obj-ppc/ntoskrnl/se/semgr.o \
+ obj-ppc/ntoskrnl/se/sid.o \
+ obj-ppc/ntoskrnl/se/token.o \
+ obj-ppc/ntoskrnl/ntoskrnl.coff \
+ obj-ppc/ntoskrnl/kdbg/kdb_symbols.o \
+ obj-ppc/lib/drivers/csq/csq.a \
+ obj-ppc/hal/hal/libhal.a \
+ obj-ppc/lib/kjs/kjs.a \
+ obj-ppc/lib/pseh/pseh.a \
+ obj-ppc/lib/rtl/rtl.a \
+ obj-ppc/lib/rossym/rossym.a \
+ obj-ppc/lib/string/string.a \
+ obj-ppc/lib/wdmguid/wdmguid.a \
+ -nostartfiles \
+ -nostdlib \
+ -lgcc -g