base_dyn_inst.hh (8201:89221928d131) base_dyn_inst.hh (8443:530ff1bc8d70)
1/*
2 * Copyright (c) 2011 ARM Limited
3 * All rights reserved.
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

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

119 {
120 cpu->demapPage(vaddr, asn);
121 }
122 void demapDataPage(Addr vaddr, uint64_t asn)
123 {
124 cpu->demapPage(vaddr, asn);
125 }
126
1/*
2 * Copyright (c) 2011 ARM Limited
3 * All rights reserved.
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

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

119 {
120 cpu->demapPage(vaddr, asn);
121 }
122 void demapDataPage(Addr vaddr, uint64_t asn)
123 {
124 cpu->demapPage(vaddr, asn);
125 }
126
127 /**
128 * Does a read to a given address.
129 * @param addr The address to read.
130 * @param data The read's data is written into this parameter.
131 * @param flags The request's flags.
132 * @return Returns any fault due to the read.
133 */
134 template <class T>
135 Fault read(Addr addr, T &data, unsigned flags);
136
137 Fault readBytes(Addr addr, uint8_t *data, unsigned size, unsigned flags);
138
127 Fault readBytes(Addr addr, uint8_t *data, unsigned size, unsigned flags);
128
139 /**
140 * Does a write to a given address.
141 * @param data The data to be written.
142 * @param addr The address to write to.
143 * @param flags The request's flags.
144 * @param res The result of the write (for load locked/store conditionals).
145 * @return Returns any fault due to the write.
146 */
147 template <class T>
148 Fault write(T data, Addr addr, unsigned flags, uint64_t *res);
149
150 Fault writeBytes(uint8_t *data, unsigned size,
151 Addr addr, unsigned flags, uint64_t *res);
152
153 /** Splits a request in two if it crosses a dcache block. */
154 void splitRequest(RequestPtr req, RequestPtr &sreqLow,
155 RequestPtr &sreqHigh);
156
157 /** Initiate a DTB address translation. */

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

908 if (traceData) {
909 traceData->setAddr(addr);
910 }
911
912 return fault;
913}
914
915template<class Impl>
129 Fault writeBytes(uint8_t *data, unsigned size,
130 Addr addr, unsigned flags, uint64_t *res);
131
132 /** Splits a request in two if it crosses a dcache block. */
133 void splitRequest(RequestPtr req, RequestPtr &sreqLow,
134 RequestPtr &sreqHigh);
135
136 /** Initiate a DTB address translation. */

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

887 if (traceData) {
888 traceData->setAddr(addr);
889 }
890
891 return fault;
892}
893
894template<class Impl>
916template<class T>
917inline Fault
918BaseDynInst<Impl>::read(Addr addr, T &data, unsigned flags)
919{
920 Fault fault = readBytes(addr, (uint8_t *)&data, sizeof(T), flags);
921
922 data = TheISA::gtoh(data);
923
924 if (traceData) {
925 traceData->setData(data);
926 }
927
928 return fault;
929}
930
931template<class Impl>
932Fault
933BaseDynInst<Impl>::writeBytes(uint8_t *data, unsigned size,
934 Addr addr, unsigned flags, uint64_t *res)
935{
936 if (traceData) {
937 traceData->setAddr(addr);
938 }
939

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

963 effAddrValid = true;
964 fault = cpu->write(req, sreqLow, sreqHigh, data, sqIdx);
965 }
966
967 return fault;
968}
969
970template<class Impl>
895Fault
896BaseDynInst<Impl>::writeBytes(uint8_t *data, unsigned size,
897 Addr addr, unsigned flags, uint64_t *res)
898{
899 if (traceData) {
900 traceData->setAddr(addr);
901 }
902

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

926 effAddrValid = true;
927 fault = cpu->write(req, sreqLow, sreqHigh, data, sqIdx);
928 }
929
930 return fault;
931}
932
933template<class Impl>
971template<class T>
972inline Fault
973BaseDynInst<Impl>::write(T data, Addr addr, unsigned flags, uint64_t *res)
974{
975 if (traceData) {
976 traceData->setData(data);
977 }
978 data = TheISA::htog(data);
979 return writeBytes((uint8_t *)&data, sizeof(T), addr, flags, res);
980}
981
982template<class Impl>
983inline void
984BaseDynInst<Impl>::splitRequest(RequestPtr req, RequestPtr &sreqLow,
985 RequestPtr &sreqHigh)
986{
987 // Check to see if the request crosses the next level block boundary.
988 unsigned block_size = cpu->getDcachePort()->peerBlockSize();
989 Addr addr = req->getVaddr();
990 Addr split_addr = roundDown(addr + req->getSize() - 1, block_size);

--- 78 unchanged lines hidden ---
934inline void
935BaseDynInst<Impl>::splitRequest(RequestPtr req, RequestPtr &sreqLow,
936 RequestPtr &sreqHigh)
937{
938 // Check to see if the request crosses the next level block boundary.
939 unsigned block_size = cpu->getDcachePort()->peerBlockSize();
940 Addr addr = req->getVaddr();
941 Addr split_addr = roundDown(addr + req->getSize() - 1, block_size);

--- 78 unchanged lines hidden ---