microldstop.hh (4679:0b39fa8f5eb8) | microldstop.hh (4767:5e55d650692e) |
---|---|
1/* 2 * Copyright (c) 2007 The Hewlett-Packard Development Company 3 * All rights reserved. 4 * 5 * Redistribution and use of this software in source and binary forms, 6 * with or without modification, are permitted provided that the 7 * following conditions are met: 8 * --- 82 unchanged lines hidden (view full) --- 91 scale(_scale), index(_index), base(_base), 92 disp(_disp), segment(_segment), 93 data(_data), 94 dataSize(_dataSize), addressSize(_addressSize) 95 {} 96 97 std::string generateDisassembly(Addr pc, 98 const SymbolTable *symtab) const; | 1/* 2 * Copyright (c) 2007 The Hewlett-Packard Development Company 3 * All rights reserved. 4 * 5 * Redistribution and use of this software in source and binary forms, 6 * with or without modification, are permitted provided that the 7 * following conditions are met: 8 * --- 82 unchanged lines hidden (view full) --- 91 scale(_scale), index(_index), base(_base), 92 disp(_disp), segment(_segment), 93 data(_data), 94 dataSize(_dataSize), addressSize(_addressSize) 95 {} 96 97 std::string generateDisassembly(Addr pc, 98 const SymbolTable *symtab) const; |
99 100 template<class Context, class MemType> 101 Fault read(Context *xc, Addr EA, MemType & Mem, unsigned flags) const 102 { 103 Fault fault = NoFault; 104 int size = dataSize; 105 Addr alignedEA = EA & ~(dataSize - 1); 106 if (EA != alignedEA) 107 size *= 2; 108 switch(size) 109 { 110 case 1: 111 fault = xc->read(alignedEA, (uint8_t&)Mem, flags); 112 break; 113 case 2: 114 fault = xc->read(alignedEA, (uint16_t&)Mem, flags); 115 break; 116 case 4: 117 fault = xc->read(alignedEA, (uint32_t&)Mem, flags); 118 break; 119 case 8: 120 fault = xc->read(alignedEA, (uint64_t&)Mem, flags); 121 break; 122 default: 123 panic("Bad operand size %d!\n", size); 124 } 125 return fault; 126 } 127 128 template<class Context, class MemType> 129 Fault write(Context *xc, MemType & Mem, Addr EA, unsigned flags) const 130 { 131 Fault fault = NoFault; 132 int size = dataSize; 133 Addr alignedEA = EA & ~(dataSize - 1); 134 if (EA != alignedEA) 135 size *= 2; 136 switch(size) 137 { 138 case 1: 139 fault = xc->write((uint8_t&)Mem, alignedEA, flags, 0); 140 break; 141 case 2: 142 fault = xc->write((uint16_t&)Mem, alignedEA, flags, 0); 143 break; 144 case 4: 145 fault = xc->write((uint32_t&)Mem, alignedEA, flags, 0); 146 break; 147 case 8: 148 fault = xc->write((uint64_t&)Mem, alignedEA, flags, 0); 149 break; 150 default: 151 panic("Bad operand size %d!\n", size); 152 } 153 return fault; 154 } |
|
99 }; 100} 101 102#endif //__ARCH_X86_INSTS_MICROLDSTOP_HH__ | 155 }; 156} 157 158#endif //__ARCH_X86_INSTS_MICROLDSTOP_HH__ |