diff options
author | Nathan Binkert <binkertn@umich.edu> | 2005-06-28 12:42:15 -0400 |
---|---|---|
committer | Nathan Binkert <binkertn@umich.edu> | 2005-06-28 12:42:15 -0400 |
commit | 036a8ceb8da8aff10b819b4aab32584d41282a64 (patch) | |
tree | e3d1c6bd8572ec503ff53e6b1b27bcd0f292f247 /sim | |
parent | d172447a7ae945139d0c3465b8504cd6b77ae819 (diff) | |
download | gem5-036a8ceb8da8aff10b819b4aab32584d41282a64.tar.xz |
Don't hard code the location of m5AlphaAccess. Instead, move the
code into a function that can be called by the AlphaConsole class.
AlphaConsole will pass in its address.
arch/alpha/ev5.hh:
Move Phys2K0Seg to ev5.hh and fixup the TSUNAMI uncacheable
bits so that they will be converted correctly.
dev/alpha_access.h:
Do not hard code the location of the AlphaConsole
dev/alpha_console.cc:
fixup #includes
tell the system where the alpha console is
sim/system.hh:
Provide a function that will tell the system where the AlphaAccess
structure (device) lives
--HG--
extra : convert_revision : 92d70ca926151a32eebe9925de597459ac58013e
Diffstat (limited to 'sim')
-rw-r--r-- | sim/system.cc | 33 | ||||
-rw-r--r-- | sim/system.hh | 5 |
2 files changed, 22 insertions, 16 deletions
diff --git a/sim/system.cc b/sim/system.cc index c1a4c2a87..8397b8e01 100644 --- a/sim/system.cc +++ b/sim/system.cc @@ -30,7 +30,6 @@ #include "base/loader/symtab.hh" #include "base/remote_gdb.hh" #include "cpu/exec_context.hh" -#include "dev/alpha_access.h" #include "kern/kernel_stats.hh" #include "mem/functional/memory_control.hh" #include "mem/functional/physical.hh" @@ -145,21 +144,6 @@ System::System(Params *p) } /** - * Set the m5AlphaAccess pointer in the console - */ - if (consoleSymtab->findAddress("m5AlphaAccess", addr)) { - Addr paddr = vtophys(physmem, addr); - uint64_t *m5AlphaAccess = - (uint64_t *)physmem->dma_addr(paddr, sizeof(uint64_t)); - - if (!m5AlphaAccess) - panic("could not translate m5AlphaAccess addr\n"); - - *m5AlphaAccess = htoa(ALPHA_ACCESS_BASE); - } else - panic("could not find m5AlphaAccess\n"); - - /** * Set the hardware reset parameter block system type and revision * information to Tsunami. */ @@ -196,6 +180,23 @@ System::~System() #endif } +void +System::setAlphaAccess(Addr access) +{ + Addr addr = 0; + if (consoleSymtab->findAddress("m5AlphaAccess", addr)) { + Addr paddr = vtophys(physmem, addr); + uint64_t *m5AlphaAccess = + (uint64_t *)physmem->dma_addr(paddr, sizeof(uint64_t)); + + if (!m5AlphaAccess) + panic("could not translate m5AlphaAccess addr\n"); + + *m5AlphaAccess = htoa(EV5::Phys2K0Seg(access)); + } else + panic("could not find m5AlphaAccess\n"); +} + bool System::breakpoint() { diff --git a/sim/system.hh b/sim/system.hh index c3e4d6d68..ab6d264ea 100644 --- a/sim/system.hh +++ b/sim/system.hh @@ -128,6 +128,11 @@ class System : public SimObject public: /** + * Set the m5AlphaAccess pointer in the console + */ + void setAlphaAccess(Addr access); + + /** * Returns the addess the kernel starts at. * @return address the kernel starts at */ |