Update MAX ASN in kernel to 127 since that's what the ev5 supports
authorAli Saidi <saidi@eecs.umich.edu>
Wed, 30 Jun 2004 20:06:47 +0000 (16:06 -0400)
committerAli Saidi <saidi@eecs.umich.edu>
Wed, 30 Jun 2004 20:06:47 +0000 (16:06 -0400)
--HG--
extra : convert_revision : e1feca854301682a7ce58e8f4ff149b10d2beb4b

kern/linux/linux_system.cc

index 4b3f32f9c187c34f83e16f6fe3535e75ce3b99c9..6d73246887c0bef84814cdedb3fac3c50b09f3ec 100644 (file)
@@ -51,6 +51,7 @@
 #include "dev/platform.hh"
 #include "targetarch/isa_traits.hh"
 #include "targetarch/vtophys.hh"
+#include "sim/debug.hh"
 
 extern SymbolTable *debugSymbolTable;
 
@@ -188,6 +189,26 @@ LinuxSystem::LinuxSystem(const string _name, const uint64_t _init_param,
     } else
         panic("could not find hwprb to set system type/variation\n");
 
+    /**
+     * EV5 only supports 127 ASNs so we are going to tell the kernel that the
+     * paritiuclar EV6 we have only supports 127 asns.
+     * @todo At some point we should change ev5.hh and the palcode to support
+     * 255 ASNs.
+     */
+    if (kernelSymtab->findAddress("dp264_mv", addr)) {
+        Addr paddr = vtophys(physmem, addr);
+        char *dp264_mv = (char *)physmem->dma_addr(paddr, sizeof(uint64_t));
+
+        if (dp264_mv) {
+            *(uint32_t*)(dp264_mv+0x18) = htoa((uint32_t)127);
+        } else
+            panic("could not translate dp264_mv addr to set the MAX_ASN to 127\n");
+
+    } else
+        panic("could not find dp264_mv to set the MAX_ASN to 127\n");
+
+
+
 #ifdef DEBUG
     if (kernelSymtab->findAddress("panic", addr))
         kernelPanicEvent->schedule(addr);