https://git.reactos.org/?p=reactos.git;a=commitdiff;h=10e52f68b2c3b9968b61dc8be973d7895ec6a0a4

commit 10e52f68b2c3b9968b61dc8be973d7895ec6a0a4
Author:     Stanislav Motylkov <x86co...@gmail.com>
AuthorDate: Fri May 8 23:02:42 2020 +0300
Commit:     Stanislav Motylkov <x86co...@gmail.com>
CommitDate: Fri May 8 23:02:42 2020 +0300

    [FREELDR] Fix some more register accesses and magic values
    
    Addendum to 764e884.
---
 boot/freeldr/freeldr/arch/i386/xbox/machxbox.c    |  4 ++--
 boot/freeldr/freeldr/arch/i386/xbox/xboxmem.c     | 13 +++++++------
 boot/freeldr/freeldr/include/arch/i386/machxbox.h |  2 ++
 3 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/boot/freeldr/freeldr/arch/i386/xbox/machxbox.c 
b/boot/freeldr/freeldr/arch/i386/xbox/machxbox.c
index 438e887d059..b1ed4c94be0 100644
--- a/boot/freeldr/freeldr/arch/i386/xbox/machxbox.c
+++ b/boot/freeldr/freeldr/arch/i386/xbox/machxbox.c
@@ -261,8 +261,8 @@ MachInit(const char *CmdLine)
 
     /* Check for Xbox by identifying device at PCI 0:0:0, if it's
      * 0x10DE/0x02A5 then we're running on an Xbox */
-    WRITE_PORT_ULONG((ULONG *)0xCF8, CONFIG_CMD(0, 0, 0));
-    PciId = READ_PORT_ULONG((ULONG *)0xCFC);
+    WRITE_PORT_ULONG((PULONG)0xCF8, CONFIG_CMD(0, 0, 0));
+    PciId = READ_PORT_ULONG((PULONG)0xCFC);
     if (PciId != 0x02A510DE)
     {
         ERR("This is not original Xbox!\n");
diff --git a/boot/freeldr/freeldr/arch/i386/xbox/xboxmem.c 
b/boot/freeldr/freeldr/arch/i386/xbox/xboxmem.c
index e8ea7b016ea..29e1382be18 100644
--- a/boot/freeldr/freeldr/arch/i386/xbox/xboxmem.c
+++ b/boot/freeldr/freeldr/arch/i386/xbox/xboxmem.c
@@ -60,11 +60,12 @@ XboxMemInit(VOID)
     PVOID MembaseTop = (PVOID)(64 * 1024 * 1024);
     PVOID MembaseLow = (PVOID)0;
 
-    (*(PULONG)(0xfd000000 + 0x100200)) = 0x03070103;
-    (*(PULONG)(0xfd000000 + 0x100204)) = 0x11448000;
+    WRITE_REGISTER_ULONG((PULONG)NV2A_FB_CFG0, 0x03070103);
+    WRITE_REGISTER_ULONG((PULONG)NV2A_FB_CFG0 + 4, 0x11448000);
 
-    WRITE_PORT_ULONG((ULONG*) 0xcf8, CONFIG_CMD(0, 0, 0x84));
-    WRITE_PORT_ULONG((ULONG*) 0xcfc, 0x7ffffff);             /* Prep hardware 
for 128 Mb */
+    /* Prep hardware for 128 Mb */
+    WRITE_PORT_ULONG((PULONG)0xCF8, CONFIG_CMD(0, 0, 0x84));
+    WRITE_PORT_ULONG((PULONG)0xCFC, 0x7FFFFFF);
 
     InstalledMemoryMb = 64;
     memset(ControlRegion, TEST_PATTERN1, TEST_SIZE);
@@ -93,8 +94,8 @@ XboxMemInit(VOID)
     }
 
     /* Set hardware for amount of memory detected */
-    WRITE_PORT_ULONG((ULONG*) 0xcf8, CONFIG_CMD(0, 0, 0x84));
-    WRITE_PORT_ULONG((ULONG*) 0xcfc, InstalledMemoryMb * 1024 * 1024 - 1);
+    WRITE_PORT_ULONG((PULONG)0xCF8, CONFIG_CMD(0, 0, 0x84));
+    WRITE_PORT_ULONG((PULONG)0xCFC, InstalledMemoryMb * 1024 * 1024 - 1);
 
     AvailableMemoryMb = InstalledMemoryMb;
 }
diff --git a/boot/freeldr/freeldr/include/arch/i386/machxbox.h 
b/boot/freeldr/freeldr/include/arch/i386/machxbox.h
index 6a95fe6025d..3f41e848666 100644
--- a/boot/freeldr/freeldr/include/arch/i386/machxbox.h
+++ b/boot/freeldr/freeldr/include/arch/i386/machxbox.h
@@ -38,6 +38,8 @@
 #define LPC_CONFIG_DEVICE_INTERRUPT             0x70
 
 #define NV2A_CONTROL_OFFSET            0xFD000000
+#define   NV2A_FB_OFFSET                (0x100000 + NV2A_CONTROL_OFFSET)
+#define     NV2A_FB_CFG0                   (0x200 + NV2A_FB_OFFSET)
 #define   NV2A_CRTC_OFFSET              (0x600000 + NV2A_CONTROL_OFFSET)
 #define     NV2A_CRTC_FRAMEBUFFER_START    (0x800 + NV2A_CRTC_OFFSET)
 #define     NV2A_CRTC_REGISTER_INDEX      (0x13D4 + NV2A_CRTC_OFFSET)

Reply via email to