Lines Matching refs:self
75 def __init__(self, data, truncated=False): argument
76 self.data = data
77 self.size_bytes = len(data)
78 self.truncated = truncated
80 def get_bits(self, start, count=0): argument
91 count = len(self.data) * 6 - start
95 for i, b in enumerate(self.data[start_byte:]):
117 def __str__(self): argument
118 return '%d byte packet%s' % (self.size_bytes, ' (truncated)' if self.truncated else '')
122 def __init__(self, packets, truncated=False): argument
129 self.packets = packets
130 self.truncated = truncated
132 self.msg_type = None
134 self.msg_type = self._get_type()
137 self.pc_start = 0 # inclusive
138 self.pc_end = 0 # not inclusive
139 self.pc_target = 0 # PC of the next range
140 self.is_exception = False # whether the message indicates an exception
141 self.is_correlation = False # whether this is a correlation message
144 self.icnt = 0
145 self.uaddr = 0
146 self.dcont = 0
150 self._decode()
152 def _get_type(self): argument
156 return self.packets[0].get_bits(0, 6)
158 def _decode(self): argument
160 if self.msg_type == TVAL_INDBR:
161 self.icnt = self.packets[0].get_bits(7, -1)
162 self.btype = self.packets[0].get_bits(6, 1)
163 self.uaddr = self.packets[1].get_bits(0)
164 self.is_exception = self.btype > 0
165 elif self.msg_type == TVAL_INDBRSYNC:
166 self.icnt = self.packets[0].get_bits(8, -1)
167 self.btype = self.packets[0].get_bits(7, 1)
168 self.pc_target = self.packets[1].get_bits(0)
169 self.dcont = self.packets[0].get_bits(6, 1)
170 self.is_exception = self.btype > 0
171 elif self.msg_type == TVAL_SYNC:
172 self.icnt = self.packets[0].get_bits(7, -1)
173 self.dcont = self.packets[0].get_bits(6, 1)
174 self.pc_target = self.packets[1].get_bits(0)
175 elif self.msg_type == TVAL_CORR:
176 self.icnt = self.packets[0].get_bits(12, -1)
177 self.is_correlation = True
179 raise NotImplementedError('Unknown message type (%d)' % self.msg_type)
181 def process_forward(self, cur_pc): argument
188 assert not self.truncated
191 if self.msg_type == TVAL_INDBR:
192 next_pc = cur_pc ^ self.uaddr
193 self.pc_target = next_pc
194 self.pc_start = cur_pc
195 self.pc_end = self.pc_start + self.icnt + 1
196 if self.msg_type == TVAL_INDBRSYNC:
197 next_pc = self.pc_target
198 self.pc_start = cur_pc
199 self.pc_end = cur_pc + self.icnt + 1
200 if self.msg_type == TVAL_SYNC:
201 next_pc = self.pc_target
202 self.pc_start = next_pc - self.icnt
203 self.pc_end = next_pc + 1
204 if self.msg_type == TVAL_CORR:
208 def process_backward(self, cur_pc): argument
215 assert not self.truncated
219 assert self.msg_type != TVAL_INDBRSYNC
220 assert self.msg_type != TVAL_SYNC
223 self.pc_target = cur_pc
224 if self.msg_type == TVAL_INDBR:
225 prev_pc ^= self.uaddr
226 self.pc_start = prev_pc
227 self.pc_end = prev_pc + self.icnt + 1
228 if self.msg_type == TVAL_CORR:
232 def __str__(self): argument
233 desc = 'Unknown (%d)' % self.msg_type
235 if self.truncated:
237 if self.msg_type == TVAL_INDBR:
239 extra = ', icnt=%d, uaddr=0x%x, exc=%d' % (self.icnt, self.uaddr, self.is_exception)
240 if self.msg_type == TVAL_INDBRSYNC:
242 extra = ', icnt=%d, dcont=%d, exc=%d' % (self.icnt, self.dcont, self.is_exception)
243 if self.msg_type == TVAL_SYNC:
245 extra = ', icnt=%d, dcont=%d' % (self.icnt, self.dcont)
246 if self.msg_type == TVAL_CORR:
248 extra = ', icnt=%d' % self.icnt
250 desc, len(self.packets), self.pc_start, self.pc_end, self.pc_target) + extra