[prev in list] [next in list] [prev in thread] [next in thread]
List: ros-dev
Subject: Re: [ros-dev] [ros-diffs] [tkreuzer] 35458: Move some architecture
From: Alex Ionescu <ionucu () videotron ! ca>
Date: 2008-08-19 20:16:37
Message-ID: 7EDAA43F-EFA1-4263-8B21-286D72771572 () videotron ! ca
[Download RAW message or body]
Please rename the function to KiFreeLdrHackKiArchHackHack or something
like that, and move it away from cpu.c, somewhere like i386/freeldr.c
to make clear that this function has NOTHING TO DO with how NT should
boot and is a hack because FreeLDR is a piece of shit that nobody
seems to want to fix.
On 19-Aug-08, at 12:07 PM, tkreuzer@svn.reactos.org wrote:
> Author: tkreuzer
> Date: Tue Aug 19 14:07:13 2008
> New Revision: 35458
>
> URL: http://svn.reactos.org/svn/reactos?rev=35458&view=rev
> Log:
> Move some architecture specific code from
> KiRosPrepareForSystemStartup into KiArchInitSystem, defined for each
> architecture. Enable KiRosBuildReservedMemoryMap for _M_AMD64
>
> Modified:
> branches/ros-amd64-bringup/reactos/ntoskrnl/ke/freeldr.c
> branches/ros-amd64-bringup/reactos/ntoskrnl/ke/i386/cpu.c
> branches/ros-amd64-bringup/reactos/ntoskrnl/ke/powerpc/cpu.c
>
> Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ke/freeldr.c
> URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/ke/freeldr.c?rev=35458&r1=35457&r2=35458&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- branches/ros-amd64-bringup/reactos/ntoskrnl/ke/freeldr.c
> [iso-8859-1] (original)
> +++ branches/ros-amd64-bringup/reactos/ntoskrnl/ke/freeldr.c
> [iso-8859-1] Tue Aug 19 14:07:13 2008
> @@ -949,7 +949,7 @@
> /* Build entries for ReactOS memory ranges, which uses ARC
> Descriptors */
> KiRosBuildOsMemoryMap();
>
> -#ifdef _M_IX86
> +#if defined(_M_IX86) || defined(_M_AMD64)
> /* Build entries for the reserved map, which uses ARC
> Descriptors */
> KiRosBuildReservedMemoryMap();
> #endif
> @@ -1266,42 +1266,15 @@
> {
> PLOADER_PARAMETER_BLOCK NtLoaderBlock;
> ULONG size, i = 0, *ent;
> -#if defined(_M_IX86)
> - PKTSS Tss;
> - PKGDTENTRY TssEntry;
> -
> - /* Load the GDT and IDT */
> -
> Ke386SetGlobalDescriptorTable(*(PKDESCRIPTOR)&KiGdtDescriptor.Limit);
> -
> Ke386SetInterruptDescriptorTable
> (*(PKDESCRIPTOR)&KiIdtDescriptor.Limit);
> -
> - /* Initialize the boot TSS */
> - Tss = &KiBootTss;
> - TssEntry = &KiBootGdt[KGDT_TSS / sizeof(KGDTENTRY)];
> - TssEntry->HighWord.Bits.Type = I386_TSS;
> - TssEntry->HighWord.Bits.Pres = 1;
> - TssEntry->HighWord.Bits.Dpl = 0;
> - TssEntry->BaseLow = (USHORT)((ULONG_PTR)Tss & 0xFFFF);
> - TssEntry->HighWord.Bytes.BaseMid = (UCHAR)((ULONG_PTR)Tss >> 16);
> - TssEntry->HighWord.Bytes.BaseHi = (UCHAR)((ULONG_PTR)Tss >> 24);
> -#endif
> -
> -#if defined(_M_PPC)
> - // Zero bats. We might have residual bats set that will
> interfere with
> - // our mapping of ofwldr.
> - for (i = 0; i < 4; i++)
> - {
> - SetBat(i, 0, 0, 0); SetBat(i, 1, 0, 0);
> - }
> - KiSetupSyscallHandler();
> - DbgPrint("Kernel Power (%08x)\n", LoaderBlock);
> - DbgPrint("ArchExtra (%08x)!\n", LoaderBlock->ArchExtra);
> -#endif
>
> /* Save pointer to ROS Block */
> KeRosLoaderBlock = LoaderBlock;
>
> /* Get debugging function */
> FrLdrDbgPrint = LoaderBlock->FrLdrDbgPrint;
> +
> + /* Per architecture initialisazion code */
> + KiArchInitSystem();
>
> /* Save memory manager data */
> KeMemoryMapRangeCount = 0;
>
> Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ke/i386/cpu.c
> URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/ke/i386/cpu.c?rev=35458&r1=35457&r2=35458&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- branches/ros-amd64-bringup/reactos/ntoskrnl/ke/i386/cpu.c
> [iso-8859-1] (original)
> +++ branches/ros-amd64-bringup/reactos/ntoskrnl/ke/i386/cpu.c
> [iso-8859-1] Tue Aug 19 14:07:13 2008
> @@ -1036,3 +1036,24 @@
> /* Capture the control state */
> KiSaveProcessorControlState(State);
> }
> +
> +VOID
> +KiArchInitSystem()
> +{
> + PKTSS Tss;
> + PKGDTENTRY TssEntry;
> +
> + /* Load the GDT and IDT */
> +
> Ke386SetGlobalDescriptorTable(*(PKDESCRIPTOR)&KiGdtDescriptor.Limit);
> +
> Ke386SetInterruptDescriptorTable
> (*(PKDESCRIPTOR)&KiIdtDescriptor.Limit);
> +
> + /* Initialize the boot TSS */
> + Tss = &KiBootTss;
> + TssEntry = &KiBootGdt[KGDT_TSS / sizeof(KGDTENTRY)];
> + TssEntry->HighWord.Bits.Type = I386_TSS;
> + TssEntry->HighWord.Bits.Pres = 1;
> + TssEntry->HighWord.Bits.Dpl = 0;
> + TssEntry->BaseLow = (USHORT)((ULONG_PTR)Tss & 0xFFFF);
> + TssEntry->HighWord.Bytes.BaseMid = (UCHAR)((ULONG_PTR)Tss >> 16);
> + TssEntry->HighWord.Bytes.BaseHi = (UCHAR)((ULONG_PTR)Tss >> 24);
> +}
>
> Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ke/powerpc/cpu.c
> URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/ke/powerpc/cpu.c?rev=35458&r1=35457&r2=35458&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- branches/ros-amd64-bringup/reactos/ntoskrnl/ke/powerpc/cpu.c
> [iso-8859-1] (original)
> +++ branches/ros-amd64-bringup/reactos/ntoskrnl/ke/powerpc/cpu.c
> [iso-8859-1] Tue Aug 19 14:07:13 2008
> @@ -275,3 +275,19 @@
> /* Capture the control state */
> KiSaveProcessorControlState(State);
> }
> +
> +VOID
> +KiArchInitSystem()
> +{
> + ULONG i;
> +
> + // Zero bats. We might have residual bats set that will
> interfere with
> + // our mapping of ofwldr.
> + for (i = 0; i < 4; i++)
> + {
> + SetBat(i, 0, 0, 0); SetBat(i, 1, 0, 0);
> + }
> + KiSetupSyscallHandler();
> + DbgPrint("Kernel Power (%08x)\n", KeRosLoaderBlock);
> + DbgPrint("ArchExtra (%08x)!\n", KeRosLoaderBlock->ArchExtra);
> +}
>
Best regards,
Alex Ionescu
_______________________________________________
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic