physical.hh (2914:2c524dc023d2) physical.hh (3012:1d5e18f6a100)
1/*
2 * Copyright (c) 2001-2005 The Regents of The University of Michigan
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;

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

75
76
77 private:
78 // prevent copying of a MainMemory object
79 PhysicalMemory(const PhysicalMemory &specmem);
80 const PhysicalMemory &operator=(const PhysicalMemory &specmem);
81
82 protected:
1/*
2 * Copyright (c) 2001-2005 The Regents of The University of Michigan
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;

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

75
76
77 private:
78 // prevent copying of a MainMemory object
79 PhysicalMemory(const PhysicalMemory &specmem);
80 const PhysicalMemory &operator=(const PhysicalMemory &specmem);
81
82 protected:
83 Addr base_addr;
84 Addr pmem_size;
85 uint8_t *pmem_addr;
83 uint8_t *pmemAddr;
86 MemoryPort *port;
84 MemoryPort *port;
87 int page_ptr;
85 int pagePtr;
88 Tick lat;
89
90 public:
91 Addr new_page();
86 Tick lat;
87
88 public:
89 Addr new_page();
92 uint64_t size() { return pmem_size; }
90 uint64_t size() { return params()->addrRange.size(); }
93
91
92 struct Params
93 {
94 std::string name;
95 Range<Addr> addrRange;
96 Tick latency;
97 };
98
99 protected:
100 Params *_params;
101
94 public:
102 public:
95 PhysicalMemory(const std::string &n, Tick latency);
103 const Params *params() const { return _params; }
104 PhysicalMemory(Params *p);
96 virtual ~PhysicalMemory();
97
98 public:
99 int deviceBlockSize();
100 void getAddressRanges(AddrRangeList &resp, AddrRangeList &snoop);
101 virtual Port *getPort(const std::string &if_name, int idx = -1);
102 void virtual init();
103 unsigned int drain(Event *de);
104
105 virtual ~PhysicalMemory();
106
107 public:
108 int deviceBlockSize();
109 void getAddressRanges(AddrRangeList &resp, AddrRangeList &snoop);
110 virtual Port *getPort(const std::string &if_name, int idx = -1);
111 void virtual init();
112 unsigned int drain(Event *de);
113
105 private:
114 protected:
106 Tick doFunctionalAccess(Packet *pkt);
115 Tick doFunctionalAccess(Packet *pkt);
107
116 virtual Tick calculateLatency(Packet *pkt);
108 void recvStatusChange(Port::Status status);
109
110 public:
111 virtual void serialize(std::ostream &os);
112 virtual void unserialize(Checkpoint *cp, const std::string &section);
113
114};
115
116#endif //__PHYSICAL_MEMORY_HH__
117 void recvStatusChange(Port::Status status);
118
119 public:
120 virtual void serialize(std::ostream &os);
121 virtual void unserialize(Checkpoint *cp, const std::string &section);
122
123};
124
125#endif //__PHYSICAL_MEMORY_HH__