Deleted Added
sdiff udiff text old ( 11073:a8afeb8bc3f0 ) new ( 12065:e3e51756dfef )
full compact
1/*
2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;
9 * redistributions in binary form must reproduce the above copyright

--- 17 unchanged lines hidden (view full) ---

27 */
28
29#ifndef __MEM_RUBY_STRUCTURES_DIRECTORYMEMORY_HH__
30#define __MEM_RUBY_STRUCTURES_DIRECTORYMEMORY_HH__
31
32#include <iostream>
33#include <string>
34
35#include "mem/protocol/DirectoryRequestType.hh"
36#include "mem/ruby/common/Address.hh"
37#include "mem/ruby/slicc_interface/AbstractEntry.hh"
38#include "params/RubyDirectoryMemory.hh"
39#include "sim/sim_object.hh"
40
41class DirectoryMemory : public SimObject
42{
43 public:
44 typedef RubyDirectoryMemoryParams Params;
45 DirectoryMemory(const Params *p);
46 ~DirectoryMemory();
47
48 void init();
49
50 uint64_t mapAddressToLocalIdx(Addr address);
51 static uint64_t mapAddressToDirectoryVersion(Addr address);
52
53 uint64_t getSize() { return m_size_bytes; }
54
55 bool isPresent(Addr address);
56 AbstractEntry *lookup(Addr address);
57 AbstractEntry *allocate(Addr address, AbstractEntry* new_entry);
58
59 void print(std::ostream& out) const;

--- 7 unchanged lines hidden (view full) ---

67 private:
68 const std::string m_name;
69 AbstractEntry **m_entries;
70 // int m_size; // # of memory module blocks this directory is
71 // responsible for
72 uint64_t m_size_bytes;
73 uint64_t m_size_bits;
74 uint64_t m_num_entries;
75 int m_version;
76
77 static int m_num_directories;
78 static int m_num_directories_bits;
79 static int m_numa_high_bit;
80};
81
82inline std::ostream&
83operator<<(std::ostream& out, const DirectoryMemory& obj)
84{
85 obj.print(out);
86 out << std::flush;
87 return out;
88}
89
90#endif // __MEM_RUBY_STRUCTURES_DIRECTORYMEMORY_HH__