memcpy(Buffer, Ptr, BufferSize);
-#ifdef DEBUG
- DbgPrint((DPRINT_DISK, "size of buffer: %x\n", Ptr[0]));
- DbgPrint((DPRINT_DISK, "information flags: %x\n", Ptr[1]));
- DbgPrint((DPRINT_DISK, "number of physical cylinders on drive: %u\n", *(PULONG)&Ptr[2]));
- DbgPrint((DPRINT_DISK, "number of physical heads on drive: %u\n", *(PULONG)&Ptr[4]));
- DbgPrint((DPRINT_DISK, "number of physical sectors per track: %u\n", *(PULONG)&Ptr[6]));
- DbgPrint((DPRINT_DISK, "total number of sectors on drive: %I64u\n", *(unsigned long long*)&Ptr[8]));
- DbgPrint((DPRINT_DISK, "bytes per sector: %u\n", Ptr[12]));
- if (Ptr[0] >= 0x1e)
+ DbgPrint((DPRINT_DISK, "size of buffer: %x\n", Ptr[0]));
+ DbgPrint((DPRINT_DISK, "information flags: %x\n", Ptr[1]));
+ DbgPrint((DPRINT_DISK, "number of physical cylinders on drive: %u\n", *(PULONG)&Ptr[2]));
+ DbgPrint((DPRINT_DISK, "number of physical heads on drive: %u\n", *(PULONG)&Ptr[4]));
+ DbgPrint((DPRINT_DISK, "number of physical sectors per track: %u\n", *(PULONG)&Ptr[6]));
+ DbgPrint((DPRINT_DISK, "total number of sectors on drive: %I64u\n", *(unsigned long long*)&Ptr[8]));
+ DbgPrint((DPRINT_DISK, "bytes per sector: %u\n", Ptr[12]));
+ if (Ptr[0] >= 0x1e)
+ {
+ DbgPrint((DPRINT_DISK, "EED configuration parameters: %x:%x\n", Ptr[13], Ptr[14]));
+ if (Ptr[13] != 0xffff && Ptr[14] != 0xffff)
{
- DbgPrint((DPRINT_DISK, "EED configuration parameters: %x:%x\n", Ptr[13], Ptr[14]));
- if (Ptr[13] != 0xffff && Ptr[14] != 0xffff)
- {
- PUCHAR SpecPtr = (PUCHAR)((Ptr[13] << 4) + Ptr[14]);
- DbgPrint((DPRINT_DISK, "SpecPtr: %x\n", SpecPtr));
- DbgPrint((DPRINT_DISK, "physical I/O port base address: %x\n", *(PUSHORT)&SpecPtr[0]));
- DbgPrint((DPRINT_DISK, "disk-drive control port address: %x\n", *(PUSHORT)&SpecPtr[2]));
- DbgPrint((DPRINT_DISK, "drive flags: %x\n", SpecPtr[4]));
- DbgPrint((DPRINT_DISK, "proprietary information: %x\n", SpecPtr[5]));
- DbgPrint((DPRINT_DISK, "IRQ for drive: %u\n", SpecPtr[6]));
- DbgPrint((DPRINT_DISK, "sector count for multi-sector transfers: %u\n", SpecPtr[7]));
- DbgPrint((DPRINT_DISK, "DMA control: %x\n", SpecPtr[8]));
- DbgPrint((DPRINT_DISK, "programmed I/O control: %x\n", SpecPtr[9]));
- DbgPrint((DPRINT_DISK, "drive options: %x\n", *(PUSHORT)&SpecPtr[10]));
- }
+ PUCHAR SpecPtr = (PUCHAR)((Ptr[13] << 4) + Ptr[14]);
+ DbgPrint((DPRINT_DISK, "SpecPtr: %x\n", SpecPtr));
+ DbgPrint((DPRINT_DISK, "physical I/O port base address: %x\n", *(PUSHORT)&SpecPtr[0]));
+ DbgPrint((DPRINT_DISK, "disk-drive control port address: %x\n", *(PUSHORT)&SpecPtr[2]));
+ DbgPrint((DPRINT_DISK, "drive flags: %x\n", SpecPtr[4]));
+ DbgPrint((DPRINT_DISK, "proprietary information: %x\n", SpecPtr[5]));
+ DbgPrint((DPRINT_DISK, "IRQ for drive: %u\n", SpecPtr[6]));
+ DbgPrint((DPRINT_DISK, "sector count for multi-sector transfers: %u\n", SpecPtr[7]));
+ DbgPrint((DPRINT_DISK, "DMA control: %x\n", SpecPtr[8]));
+ DbgPrint((DPRINT_DISK, "programmed I/O control: %x\n", SpecPtr[9]));
+ DbgPrint((DPRINT_DISK, "drive options: %x\n", *(PUSHORT)&SpecPtr[10]));
}
- if (Ptr[0] >= 0x42)
- {
- DbgPrint((DPRINT_DISK, "signature: %x\n", Ptr[15]));
- }
-#endif
+ }
+ if (Ptr[0] >= 0x42)
+ {
+ DbgPrint((DPRINT_DISK, "signature: %x\n", Ptr[15]));
+ }
return TRUE;
}
{
REGS Regs;
PVESA_SVGA_INFO SvgaInfo = (PVESA_SVGA_INFO)BIOSCALLBUFFER;
-#ifdef DEBUG
//USHORT* VideoModes;
//USHORT Index;
-#endif // defined DEBUG
DbgPrint((DPRINT_UI, "BiosIsVesaSupported()\n"));
return 0x0000;
}
-#ifdef DEBUG
DbgPrint((DPRINT_UI, "Supported.\n"));
DbgPrint((DPRINT_UI, "SvgaInfo->Signature[4] = %c%c%c%c\n", SvgaInfo->Signature[0], SvgaInfo->Signature[1], SvgaInfo->Signature[2], SvgaInfo->Signature[3]));
DbgPrint((DPRINT_UI, "SvgaInfo->VesaVersion = v%d.%d\n", ((SvgaInfo->VesaVersion >> 8) & 0xFF), (SvgaInfo->VesaVersion & 0xFF)));
//}
DbgPrint((DPRINT_UI, "\n"));
- //getch();
-#endif // defined DEBUG
return SvgaInfo->VesaVersion;
}
/* MACROS *******************************************************************/
-#ifdef DEBUG
+#ifdef DBG
#define DEFAULT_BAUD_RATE 19200
WRITE_PORT_UCHAR (SER_THR(Rs232PortBase), ByteToSend);
}
-#endif
+#endif /* defined DBG */
BOOLEAN Rs232PortInUse(ULONG Base)
{
-#ifdef DEBUG
+#ifdef DBG
return PortInitialized && Rs232PortBase == (PUCHAR)Base ? TRUE : FALSE;
#else
return FALSE;
#include <debug.h>
-#ifdef DEBUG
+#ifdef DBG
//#define DEBUG_ALL
//#define DEBUG_INIFILE
}
}
-#endif // defined DEBUG
+#endif // defined DBG
BOOLEAN DiskReadBootRecord(ULONG DriveNumber, ULONGLONG LogicalSectorNumber, PMASTER_BOOT_RECORD BootRecord)
{
char ErrMsg[64];
-#ifdef DEBUG
ULONG Index;
-#endif
// Read master boot record
if (!MachDiskReadLogicalSectors(DriveNumber, LogicalSectorNumber, 1, (PVOID)DISKREADBUFFER))
RtlCopyMemory(BootRecord, (PVOID)DISKREADBUFFER, sizeof(MASTER_BOOT_RECORD));
-#ifdef DEBUG
-
DbgPrint((DPRINT_DISK, "Dumping partition table for drive 0x%x:\n", DriveNumber));
DbgPrint((DPRINT_DISK, "Boot record logical start sector = %d\n", LogicalSectorNumber));
DbgPrint((DPRINT_DISK, "sizeof(MASTER_BOOT_RECORD) = 0x%x.\n", sizeof(MASTER_BOOT_RECORD)));
DbgPrint((DPRINT_DISK, "PartitionSectorCount: 0x%x\n", BootRecord->PartitionTable[Index].PartitionSectorCount));
}
-#endif // defined DEBUG
-
// Check the partition table magic value
if (BootRecord->MasterBootRecordMagic != 0xaa55)
{
<include base="freeldr_base">cache</include>
<include base="ntoskrnl">include</include>
<define name="__USE_W32API" />
-
- <define name="DEBUG" />
-
<define name="_NTHAL_" />
<define name="_NTSYSTEM_" />
<compilerflag>-ffreestanding</compilerflag>
<include base="freeldr_base">cache</include>
<include base="ntoskrnl">include</include>
<define name="__USE_W32API" />
-<!--
- <define name="DEBUG" />
--->
<define name="_NTHAL_" />
<define name="_NTSYSTEM_" />
<compilerflag>-ffreestanding</compilerflag>
</module>
</if>
</directory>
+ <directory name="mips">
+ <if property="ARCH" value="mips">
+ <module name="freeldr_arch" type="objectlibrary">
+ <include base="freeldr_base">include</include>
+ <include base="freeldr_base">cache</include>
+ <include base="ntoskrnl">include</include>
+ <define name="__USE_W32API" />
+ <define name="DEBUG" />
+ <define name="_NTHAL_" />
+ <file>boot.s</file>
+ <file>console.c</file>
+ <file>disk.c</file>
+ <file>hardware.c</file>
+ <file>loader.c</file>
+ <file>mach.c</file>
+ <file>video.c</file>
+ </module>
+ </if>
+</directory>
</directory>
<include base="cmlib">.</include>
<include base="ntoskrnl">include</include>
<define name="__USE_W32API" />
-
- <define name="DEBUG" />
-
<define name="_NTHAL_" />
<define name="_NTSYSTEM_" />
<compilerflag>-ffreestanding</compilerflag>
<include base="freeldr_base64k">include</include>
<include base="ntoskrnl">include</include>
<define name="__USE_W32API" />
-<!--
- <define name="DEBUG" />
--->
<define name="_NTHAL_" />
<define name="_NTSYSTEM_" />
<compilerflag>-ffreestanding</compilerflag>
<include base="freeldr_startup">include</include>
<include base="ntoskrnl">include</include>
<define name="__USE_W32API" />
-<!--
- <define name="DEBUG" />
--->
<compilerflag>-ffreestanding</compilerflag>
<compilerflag>-fno-builtin</compilerflag>
<compilerflag>-fno-inline</compilerflag>
// Get the FAT type
FatType = FatDetermineFatType(FatVolumeBootSector, PartitionSectorCount);
-#ifdef DEBUG
-
DbgPrint((DPRINT_FILESYSTEM, "Dumping boot sector:\n"));
if (ISFATX(FatType))
DbgPrint((DPRINT_FILESYSTEM, "BootSectorMagic: 0x%x\n", FatVolumeBootSector->BootSectorMagic));
}
-#endif // defined DEBUG
-
- //
+ //
// Set the correct partition offset
//
FatVolumeStartSector = VolumeStartSector;
break;
}
-#ifdef DEBUG
//
// Check return value
//
{
DbgPrint((DPRINT_FILESYSTEM, "FsOpenFile() failed.\n"));
}
-#endif // defined DEBUG
return FileHandle;
}
return NtfsFixupRecord((PNTFS_RECORD)Buffer);
}
-#ifdef DEBUG
+#ifdef DBG
VOID NtfsPrintFile(PNTFS_INDEX_ENTRY IndexEntry)
{
PWCHAR FileName;
EntryFileName = IndexEntry->FileName.FileName;
EntryFileNameLength = IndexEntry->FileName.FileNameLength;
-#ifdef DEBUG
+#ifdef DBG
NtfsPrintFile(IndexEntry);
#endif
#ifndef __DEBUG_H
#define __DEBUG_H
-#ifdef DEBUG
+#ifdef DBG
#define DPRINT_NONE 0x00000000 // No debug print
#define DPRINT_WARNING 0x00000001 // OR this with DebugPrintMask to enable debugger messages and other misc stuff
void MEMORY_READWRITE_BREAKPOINT4(unsigned long addr);
void MEMORY_WRITE_BREAKPOINT4(unsigned long addr);
-#endif
+#endif // defined __i386__
#else
#define BugCheck(_x_)
#define DbgDumpBuffer(_x_, _y_, _z_)
-#endif // defined DEBUG
+#endif // defined DBG
#define UNIMPLEMENTED() BugCheck((DPRINT_WARNING, "This function is unimplemented!\n"))
#include <arch/i386/machxbox.h>
#include <internal/i386/intrin_i.h>
#include <internal/i386/ke.h>
+#elif _MIPS_
+#include <arch/mips/arcbios.h>
#endif
/* misc files */
#include <keycodes.h>
ULONG Reserved;
} PACKED BIOS_MEMORY_MAP, *PBIOS_MEMORY_MAP;
-#if defined(__i386__) || defined(_PPC_)
+#if defined(__i386__) || defined(_PPC_) || defined(_MIPS_)
#define MM_PAGE_SIZE 4096
#define MM_PAGE_MASK 0xFFF
#define MM_SIZE_TO_PAGES(a) \
( ((a) >> MM_PAGE_SHIFT) + ((a) & MM_PAGE_MASK ? 1 : 0) )
+#endif // defined __i386__ or _PPC_ or _MIPS_
//
// This is the zone which is used by the OS loader
//
#define LOADER_HIGH_ZONE ((16*1024*1024) >> MM_PAGE_SHIFT) //16Mb page
-#endif // defined __i386__ or _PPC_
-
typedef struct
{
TYPE_OF_MEMORY PageAllocated; // Type of allocated memory (LoaderFree if this memory is free)
extern ULONG FreePagesInLookupTable;
extern ULONG LastFreePageHint;
-#ifdef DEBUG
+#ifdef DBG
PUCHAR MmGetSystemMemoryMapTypeString(ULONG Type);
#endif
{
PINI_SECTION Section = (PINI_SECTION)SectionId;
PINI_SECTION_ITEM SectionItem;
-#ifdef DEBUG
ULONG RealSettingNumber = SettingNumber;
-#endif
DbgPrint((DPRINT_INIFILE, ".001 NameSize = %d ValueSize = %d\n", NameSize, ValueSize));
DbgPrint((DPRINT_INIFILE, "IniReadSettingByNumber() SectionId = 0x%x\n", SectionId));
#define NDEBUG
#include <debug.h>
-#ifdef DEBUG
+#ifdef DBG
typedef struct
{
ULONG Type;
{
BIOS_MEMORY_MAP BiosMemoryMap[32];
ULONG BiosMemoryMapEntryCount;
-#ifdef DEBUG
+#ifdef DBG
ULONG Index;
#endif
BiosMemoryMapEntryCount = MachGetMemoryMap(BiosMemoryMap, sizeof(BiosMemoryMap) / sizeof(BIOS_MEMORY_MAP));
-#ifdef DEBUG
+#ifdef DBG
// Dump the system memory map
if (BiosMemoryMapEntryCount != 0)
{
return TRUE;
}
-#ifdef DEBUG
+#ifdef DBG
PUCHAR MmGetSystemMemoryMapTypeString(ULONG Type)
{
ULONG Index;
#define NDEBUG
#include <debug.h>
-#ifdef DEBUG
+#ifdef DBG
ULONG AllocationCount = 0;
VOID VerifyHeap(VOID);
VOID IncrementAllocationCount(VOID);
VOID DecrementAllocationCount(VOID);
VOID MemAllocTest(VOID);
-#endif // DEBUG
+#endif // DBG
/*
* Hack alert
}
-#ifdef DEBUG
+#ifdef DBG
IncrementAllocationCount();
DbgPrint((DPRINT_MEMORY, "Allocated %d bytes (%d pages) of memory starting at page %d. AllocCount: %d\n", MemorySize, PagesNeeded, FirstFreePageFromEnd, AllocationCount));
DbgPrint((DPRINT_MEMORY, "Memory allocation pointer: 0x%x\n", MemPointer));
//VerifyHeap();
-#endif // DEBUG
+#endif // DBG
// Now return the pointer
return MemPointer;
FreePagesInLookupTable -= PagesNeeded;
MemPointer = (PVOID)(StartPageNumber * MM_PAGE_SIZE);
-#ifdef DEBUG
+#ifdef DBG
IncrementAllocationCount();
DbgPrint((DPRINT_MEMORY, "Allocated %d bytes (%d pages) of memory starting at page %d. AllocCount: %d\n", MemorySize, PagesNeeded, StartPageNumber, AllocationCount));
DbgPrint((DPRINT_MEMORY, "Memory allocation pointer: 0x%x\n", MemPointer));
//VerifyHeap();
-#endif // DEBUG
+#endif // DBG
// Now return the pointer
return MemPointer;
FreePagesInLookupTable -= PagesNeeded;
MemPointer = (PVOID)(FirstFreePageFromEnd * MM_PAGE_SIZE);
-#ifdef DEBUG
+#ifdef DBG
IncrementAllocationCount();
DbgPrint((DPRINT_MEMORY, "Allocated %d bytes (%d pages) of memory starting at page %d. AllocCount: %d\n", MemorySize, PagesNeeded, FirstFreePageFromEnd, AllocationCount));
DbgPrint((DPRINT_MEMORY, "Memory allocation pointer: 0x%x\n", MemPointer));
//VerifyHeap();
-#endif // DEBUG
+#endif // DBG
// Now return the pointer
return MemPointer;
ULONG Idx;
PPAGE_LOOKUP_TABLE_ITEM RealPageLookupTable = (PPAGE_LOOKUP_TABLE_ITEM)PageLookupTableAddress;
-#ifdef DEBUG
+#ifdef DBG
// Make sure we didn't get a bogus pointer
if (MemoryPointer >= (PVOID)(TotalPagesInLookupTable * MM_PAGE_SIZE))
{
BugCheck((DPRINT_MEMORY, "Bogus memory pointer (0x%x) passed to MmFreeMemory()\n", MemoryPointer));
}
-#endif // DEBUG
+#endif // DBG
// Find out the page number of the first
// page of memory they allocated
PageNumber = MmGetPageNumberFromAddress(MemoryPointer);
PageCount = RealPageLookupTable[PageNumber].PageAllocationLength;
-#ifdef DEBUG
+#ifdef DBG
// Make sure we didn't get a bogus pointer
if ((PageCount < 1) || (PageCount > (TotalPagesInLookupTable - PageNumber)))
{
FreePagesInLookupTable += PageCount;
-#ifdef DEBUG
+#ifdef DBG
DecrementAllocationCount();
DbgPrint((DPRINT_MEMORY, "Freed %d pages of memory starting at page %d. AllocationCount: %d\n", PageCount, PageNumber, AllocationCount));
//VerifyHeap();
-#endif // DEBUG
+#endif // DBG
}
-#ifdef DEBUG
+#ifdef DBG
VOID VerifyHeap(VOID)
{
ULONG Idx;
printf("MemPtr5: 0x%x\n", (int)MemPtr5);
MachConsGetCh();
}
-#endif // DEBUG
+#endif // DBG
ULONG GetSystemMemorySize(VOID)
{
DbgPrint((DPRINT_WINDOWS, "Memory Descriptor List prepared, printing PDE\n"));
List_PaToVa(&LoaderBlock->MemoryDescriptorListHead);
- #if DEBUG
+#ifdef DBG
{
ULONG *PDE_Addr=(ULONG *)PDE;//0xC0300000;
int j;
DbgPrint((DPRINT_WINDOWS, "\n"));
}
}
- #endif
+#endif
// Enable paging