CORE-12881
Signed-off-by: Timo Kreuzer <timo.kreuzer@reactos.org>
DBG_DEFAULT_CHANNEL(MEMORY);
DBG_DEFAULT_CHANNEL(MEMORY);
+#define ULONGLONG_ALIGN_DOWN_BY(size, align) \
+ ((ULONGLONG)(size) & ~((ULONGLONG)(align) - 1))
+
+#define ULONGLONG_ALIGN_UP_BY(size, align) \
+ (ULONGLONG_ALIGN_DOWN_BY(((ULONGLONG)(size) + align - 1), align))
+
#define MAX_BIOS_DESCRIPTORS 80
BIOS_MEMORY_MAP PcBiosMemoryMap[MAX_BIOS_DESCRIPTORS];
#define MAX_BIOS_DESCRIPTORS 80
BIOS_MEMORY_MAP PcBiosMemoryMap[MAX_BIOS_DESCRIPTORS];
MemoryType = LoaderFree;
/* Align up base of memory range */
MemoryType = LoaderFree;
/* Align up base of memory range */
- RealBaseAddress = ALIGN_UP_BY(PcBiosMemoryMap[PcBiosMapCount].BaseAddress,
- PAGE_SIZE);
+ RealBaseAddress = ULONGLONG_ALIGN_UP_BY(
+ PcBiosMemoryMap[PcBiosMapCount].BaseAddress,
+ PAGE_SIZE);
/* Calculate aligned EndAddress */
EndAddress = PcBiosMemoryMap[PcBiosMapCount].BaseAddress +
PcBiosMemoryMap[PcBiosMapCount].Length;
/* Calculate aligned EndAddress */
EndAddress = PcBiosMemoryMap[PcBiosMapCount].BaseAddress +
PcBiosMemoryMap[PcBiosMapCount].Length;
- EndAddress = ALIGN_DOWN_BY(EndAddress, PAGE_SIZE);
+ EndAddress = ULONGLONG_ALIGN_DOWN_BY(EndAddress, PAGE_SIZE);
/* Check if there is anything left */
if (EndAddress <= RealBaseAddress)
/* Check if there is anything left */
if (EndAddress <= RealBaseAddress)
MemoryType = LoaderSpecialMemory;
/* Align down base of memory area */
MemoryType = LoaderSpecialMemory;
/* Align down base of memory area */
- RealBaseAddress = ALIGN_DOWN_BY(PcBiosMemoryMap[PcBiosMapCount].BaseAddress,
- PAGE_SIZE);
+ RealBaseAddress = ULONGLONG_ALIGN_DOWN_BY(
+ PcBiosMemoryMap[PcBiosMapCount].BaseAddress,
+ PAGE_SIZE);
/* Calculate the length after aligning the base */
RealSize = PcBiosMemoryMap[PcBiosMapCount].BaseAddress +
PcBiosMemoryMap[PcBiosMapCount].Length - RealBaseAddress;
/* Calculate the length after aligning the base */
RealSize = PcBiosMemoryMap[PcBiosMapCount].BaseAddress +
PcBiosMemoryMap[PcBiosMapCount].Length - RealBaseAddress;
- RealSize = ALIGN_UP_BY(RealSize, PAGE_SIZE);
+ RealSize = ULONGLONG_ALIGN_UP_BY(RealSize, PAGE_SIZE);
}
/* Check if we can add this descriptor */
}
/* Check if we can add this descriptor */
/* If the continuation value is zero,
* then this was the last entry, so we're done. */
if (Regs.x.ebx == 0x00000000)
/* If the continuation value is zero,
* then this was the last entry, so we're done. */
if (Regs.x.ebx == 0x00000000)