diff --git a/reactos/drivers/base/bootvid/bootvid.rbuild b/reactos/drivers/base/bootvid/bootvid.rbuild
index fcd44ebb09c..4a733a2f947 100644
--- a/reactos/drivers/base/bootvid/bootvid.rbuild
+++ b/reactos/drivers/base/bootvid/bootvid.rbuild
@@ -6,7 +6,7 @@
.
ntoskrnl
hal
-
+
bootvid.c
bootdata.c
@@ -14,7 +14,7 @@
-
+
bootvid.c
bootdata.c
diff --git a/reactos/drivers/base/bootvid/bootvid_amd64.def b/reactos/drivers/base/bootvid/bootvid_amd64.def
new file mode 100644
index 00000000000..7d3aacc1367
--- /dev/null
+++ b/reactos/drivers/base/bootvid/bootvid_amd64.def
@@ -0,0 +1,15 @@
+LIBRARY BOOTVID.DLL
+
+EXPORTS
+VidBitBlt
+VidBufferToScreenBlt
+VidCleanUp
+VidDisplayString
+VidDisplayStringXY
+VidInitialize
+VidResetDisplay
+VidScreenToBufferBlt
+VidSetScrollRegion
+VidSetTextColor
+VidSolidColorFill
+
diff --git a/reactos/drivers/base/bootvid/i386/bootvid.c b/reactos/drivers/base/bootvid/i386/bootvid.c
index aaf11a38f9b..1ade54a4fd1 100644
--- a/reactos/drivers/base/bootvid/i386/bootvid.c
+++ b/reactos/drivers/base/bootvid/i386/bootvid.c
@@ -355,7 +355,7 @@ BOOLEAN
NTAPI
VidInitialize(IN BOOLEAN SetMode)
{
- ULONG Context = 0;
+ ULONG_PTR Context = 0;
PHYSICAL_ADDRESS TranslatedAddress;
PHYSICAL_ADDRESS NullAddress = {{0}};
ULONG AddressSpace = 1;
diff --git a/reactos/drivers/base/bootvid/i386/vga.c b/reactos/drivers/base/bootvid/i386/vga.c
index 83405ee13a9..6ace318acf5 100644
--- a/reactos/drivers/base/bootvid/i386/vga.c
+++ b/reactos/drivers/base/bootvid/i386/vga.c
@@ -314,8 +314,8 @@ VgaScroll(ULONG Scroll)
do
{
/* Write value in the new position so that we can do the scroll */
- WRITE_REGISTER_UCHAR((PUCHAR)j,
- READ_REGISTER_UCHAR((PUCHAR)j + i));
+ WRITE_REGISTER_UCHAR(UlongToPtr(j),
+ READ_REGISTER_UCHAR(UlongToPtr(j + i)));
/* Move to the next memory location to write to */
j++;
@@ -1192,7 +1192,7 @@ VidSolidColorFill(IN ULONG Left,
__outpw(0x3CE, 7);
/* Calculate pixel position for the read */
- Offset = VgaBase + (Top * 80) + (PUCHAR)LeftOffset;
+ Offset = VgaBase + (Top * 80) + (PUCHAR)(ULONG_PTR)LeftOffset;
/* Select the bitmask register and write the mask */
__outpw(0x3CE, (USHORT)lMask);
@@ -1216,7 +1216,7 @@ VidSolidColorFill(IN ULONG Left,
if (Distance)
{
/* Calculate new pixel position */
- Offset = VgaBase + (Top * 80) + (PUCHAR)RightOffset;
+ Offset = VgaBase + (Top * 80) + (PUCHAR)(ULONG_PTR)RightOffset;
Distance--;
/* Select the bitmask register and write the mask */
@@ -1242,7 +1242,7 @@ VidSolidColorFill(IN ULONG Left,
if (Distance)
{
/* Calculate new pixel position */
- Offset = VgaBase + (Top * 80) + (PUCHAR)(LeftOffset + 1);
+ Offset = VgaBase + (Top * 80) + (PUCHAR)(ULONG_PTR)(LeftOffset + 1);
/* Set the bitmask to 0xFF for all 4 planes */
__outpw(0x3CE, 0xFF08);