- Change debugging checkpoint to online-asm (all this is temporary), since any code after while(1){}; seems to be just optimized away by gcc
- Uncomment NDEBUG for now
svn path=/trunk/; revision=24401
\r
#include <freeldr.h>\r
\r
\r
#include <freeldr.h>\r
\r
+#include <ndk/ldrtypes.h>\r
+\r
+//#define NDEBUG\r
#include <debug.h>\r
\r
VOID DumpMemoryAllocMap(VOID);\r
#include <debug.h>\r
\r
VOID DumpMemoryAllocMap(VOID);\r
RtlZeroMemory(*GdtIdt, NumPages << MM_PAGE_SHIFT);\r
}\r
\r
RtlZeroMemory(*GdtIdt, NumPages << MM_PAGE_SHIFT);\r
}\r
\r
VOID\r
LoadAndBootWindows(PCSTR OperatingSystemName, WORD OperatingSystemVersion)\r
{\r
VOID\r
LoadAndBootWindows(PCSTR OperatingSystemName, WORD OperatingSystemVersion)\r
{\r
BOOLEAN Status;\r
ULONG SectionId;\r
ULONG BootDevice;\r
BOOLEAN Status;\r
ULONG SectionId;\r
ULONG BootDevice;\r
- PLOADER_PARAMETER_BLOCK LoaderBlock=NULL, LoaderBlockVA;\r
- PLDR_DATA_TABLE_ENTRY KernelDTE, HalDTE;\r
+ PLOADER_PARAMETER_BLOCK LoaderBlock, LoaderBlockVA;\r
KERNEL_ENTRY_POINT KiSystemStartup;\r
KERNEL_ENTRY_POINT KiSystemStartup;\r
+ PLDR_DATA_TABLE_ENTRY KernelDTE, HalDTE;\r
+ PIMAGE_NT_HEADERS NtosHeader;\r
ULONG PcrBasePage=0;\r
ULONG TssBasePage=0;\r
\r
ULONG PcrBasePage=0;\r
ULONG TssBasePage=0;\r
\r
//sprintf(MsgBuffer,"Booting Microsoft(R) Windows(R) OS version '%04x' is not implemented yet", OperatingSystemVersion);\r
//UiMessageBox(MsgBuffer);\r
\r
//sprintf(MsgBuffer,"Booting Microsoft(R) Windows(R) OS version '%04x' is not implemented yet", OperatingSystemVersion);\r
//UiMessageBox(MsgBuffer);\r
\r
\r
/* Save entry-point pointer (VA) */\r
KiSystemStartup = (KERNEL_ENTRY_POINT)KernelDTE->EntryPoint;\r
\r
/* Save entry-point pointer (VA) */\r
KiSystemStartup = (KERNEL_ENTRY_POINT)KernelDTE->EntryPoint;\r
LoaderBlockVA = PaToVa(LoaderBlock);\r
\r
/* Debugging... */\r
LoaderBlockVA = PaToVa(LoaderBlock);\r
\r
/* Debugging... */\r
\r
WinLdrpDumpMemoryDescriptors(LoaderBlockVA);\r
\r
\r
WinLdrpDumpMemoryDescriptors(LoaderBlockVA);\r
\r
- /*__asm\r
- {\r
- or esp, KSEG0_BASE;\r
- or ebp, KSEG0_BASE;\r
- }*/\r
-\r
- /*\r
- {\r
- ULONG *trrr = (ULONG *)(512*1024*1024);\r
+ // temp: offset C9000\r
- *trrr = 0x13131414;\r
- }\r
+ //FIXME: If I substitute this debugging checkpoint, GCC will "optimize away" the code below\r
+ //while (1) {};\r
+ asm(".intel_syntax noprefix\n");\r
+ asm("test1:\n");\r
+ asm("jmp test1\n");\r
+ asm(".att_syntax\n");\r
- //FIXME!\r
- while (1) {};*/\r
- (KiSystemStartup)(LoaderBlockVA);\r
+ (*KiSystemStartup)(LoaderBlockVA);\r