segmentation.py (10959:30c700ee0d47) | segmentation.py (12584:2af98e1fb894) |
---|---|
1# Copyright (c) 2007 The Hewlett-Packard Development Company 2# Copyright (c) 2012-2013 AMD 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 --- 25 unchanged lines hidden (view full) --- 34# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 35# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36# 37# Authors: Gabe Black 38 39microcode = ''' 40def macroop LGDT_M 41{ | 1# Copyright (c) 2007 The Hewlett-Packard Development Company 2# Copyright (c) 2012-2013 AMD 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 --- 25 unchanged lines hidden (view full) --- 34# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 35# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36# 37# Authors: Gabe Black 38 39microcode = ''' 40def macroop LGDT_M 41{ |
42 .serializing | 42 .serialize_after |
43 .adjust_env maxOsz 44 45 # Get the limit 46 ld t1, seg, sib, disp, dataSize=2 47 # Get the base 48 ld t2, seg, sib, 'adjustedDisp + 2' 49 wrbase tsg, t2 50 wrlimit tsg, t1 51}; 52 53def macroop LGDT_P 54{ | 43 .adjust_env maxOsz 44 45 # Get the limit 46 ld t1, seg, sib, disp, dataSize=2 47 # Get the base 48 ld t2, seg, sib, 'adjustedDisp + 2' 49 wrbase tsg, t2 50 wrlimit tsg, t1 51}; 52 53def macroop LGDT_P 54{ |
55 .serializing | 55 .serialize_after |
56 .adjust_env maxOsz 57 58 rdip t7 59 # Get the limit 60 ld t1, seg, riprel, disp, dataSize=2 61 # Get the base 62 ld t2, seg, riprel, 'adjustedDisp + 2' 63 wrbase tsg, t2 64 wrlimit tsg, t1 65}; 66 67# 68# These versions are for when the original data size was 16 bits. The base is 69# still 32 bits, but the top byte is zeroed before being used. 70# 71 72def macroop LGDT_16_M 73{ | 56 .adjust_env maxOsz 57 58 rdip t7 59 # Get the limit 60 ld t1, seg, riprel, disp, dataSize=2 61 # Get the base 62 ld t2, seg, riprel, 'adjustedDisp + 2' 63 wrbase tsg, t2 64 wrlimit tsg, t1 65}; 66 67# 68# These versions are for when the original data size was 16 bits. The base is 69# still 32 bits, but the top byte is zeroed before being used. 70# 71 72def macroop LGDT_16_M 73{ |
74 .serializing | 74 .serialize_after |
75 .adjust_env maxOsz 76 77 # Get the limit 78 ld t1, seg, sib, disp, dataSize=2 79 # Get the base 80 ld t2, seg, sib, 'adjustedDisp + 2', dataSize=4 81 zexti t2, t2, 23, dataSize=8 82 wrbase tsg, t2, dataSize=8 83 wrlimit tsg, t1 84}; 85 86def macroop LGDT_16_P 87{ | 75 .adjust_env maxOsz 76 77 # Get the limit 78 ld t1, seg, sib, disp, dataSize=2 79 # Get the base 80 ld t2, seg, sib, 'adjustedDisp + 2', dataSize=4 81 zexti t2, t2, 23, dataSize=8 82 wrbase tsg, t2, dataSize=8 83 wrlimit tsg, t1 84}; 85 86def macroop LGDT_16_P 87{ |
88 .serializing | 88 .serialize_after |
89 .adjust_env maxOsz 90 91 rdip t7 92 # Get the limit 93 ld t1, seg, riprel, disp, dataSize=2 94 # Get the base 95 ld t2, seg, riprel, 'adjustedDisp + 2', dataSize=4 96 zexti t2, t2, 23, dataSize=8 97 wrbase tsg, t2 98 wrlimit tsg, t1 99}; 100 101def macroop LIDT_M 102{ | 89 .adjust_env maxOsz 90 91 rdip t7 92 # Get the limit 93 ld t1, seg, riprel, disp, dataSize=2 94 # Get the base 95 ld t2, seg, riprel, 'adjustedDisp + 2', dataSize=4 96 zexti t2, t2, 23, dataSize=8 97 wrbase tsg, t2 98 wrlimit tsg, t1 99}; 100 101def macroop LIDT_M 102{ |
103 .serializing | 103 .serialize_after |
104 .adjust_env maxOsz 105 106 # Get the limit 107 ld t1, seg, sib, disp, dataSize=2 108 # Get the base 109 ld t2, seg, sib, 'adjustedDisp + 2' 110 wrbase idtr, t2 111 wrlimit idtr, t1 112}; 113 114def macroop LIDT_P 115{ | 104 .adjust_env maxOsz 105 106 # Get the limit 107 ld t1, seg, sib, disp, dataSize=2 108 # Get the base 109 ld t2, seg, sib, 'adjustedDisp + 2' 110 wrbase idtr, t2 111 wrlimit idtr, t1 112}; 113 114def macroop LIDT_P 115{ |
116 .serializing | 116 .serialize_after |
117 .adjust_env maxOsz 118 119 rdip t7 120 # Get the limit 121 ld t1, seg, riprel, disp, dataSize=2 122 # Get the base 123 ld t2, seg, riprel, 'adjustedDisp + 2' 124 wrbase idtr, t2 125 wrlimit idtr, t1 126}; 127 128# 129# These versions are for when the original data size was 16 bits. The base is 130# still 32 bits, but the top byte is zeroed before being used. 131# 132 133def macroop LIDT_16_M 134{ | 117 .adjust_env maxOsz 118 119 rdip t7 120 # Get the limit 121 ld t1, seg, riprel, disp, dataSize=2 122 # Get the base 123 ld t2, seg, riprel, 'adjustedDisp + 2' 124 wrbase idtr, t2 125 wrlimit idtr, t1 126}; 127 128# 129# These versions are for when the original data size was 16 bits. The base is 130# still 32 bits, but the top byte is zeroed before being used. 131# 132 133def macroop LIDT_16_M 134{ |
135 .serializing | 135 .serialize_after |
136 .adjust_env maxOsz 137 138 # Get the limit 139 ld t1, seg, sib, disp, dataSize=2 140 # Get the base 141 ld t2, seg, sib, 'adjustedDisp + 2', dataSize=4 142 zexti t2, t2, 23, dataSize=8 143 wrbase idtr, t2, dataSize=8 144 wrlimit idtr, t1 145}; 146 147def macroop LIDT_16_P 148{ | 136 .adjust_env maxOsz 137 138 # Get the limit 139 ld t1, seg, sib, disp, dataSize=2 140 # Get the base 141 ld t2, seg, sib, 'adjustedDisp + 2', dataSize=4 142 zexti t2, t2, 23, dataSize=8 143 wrbase idtr, t2, dataSize=8 144 wrlimit idtr, t1 145}; 146 147def macroop LIDT_16_P 148{ |
149 .serializing | 149 .serialize_after |
150 .adjust_env maxOsz 151 152 rdip t7 153 # Get the limit 154 ld t1, seg, riprel, disp, dataSize=2 155 # Get the base 156 ld t2, seg, riprel, 'adjustedDisp + 2', dataSize=4 157 zexti t2, t2, 23, dataSize=8 158 wrbase idtr, t2 159 wrlimit idtr, t1 160}; 161 162def macroop LTR_R 163{ | 150 .adjust_env maxOsz 151 152 rdip t7 153 # Get the limit 154 ld t1, seg, riprel, disp, dataSize=2 155 # Get the base 156 ld t2, seg, riprel, 'adjustedDisp + 2', dataSize=4 157 zexti t2, t2, 23, dataSize=8 158 wrbase idtr, t2 159 wrlimit idtr, t1 160}; 161 162def macroop LTR_R 163{ |
164 .serializing | 164 .serialize_after |
165 chks reg, t0, TRCheck 166 limm t4, 0, dataSize=8 167 srli t4, reg, 3, dataSize=2 168 ldst t1, tsg, [8, t4, t0], dataSize=8 169 ld t2, tsg, [8, t4, t0], 8, dataSize=8 170 chks reg, t1, TSSCheck 171 wrdh t3, t1, t2 172 wrdl tr, t1, reg 173 wrbase tr, t3, dataSize=8 174 limm t5, (1 << 9) 175 or t1, t1, t5 176 st t1, tsg, [8, t4, t0], dataSize=8 177}; 178 179def macroop LTR_M 180{ | 165 chks reg, t0, TRCheck 166 limm t4, 0, dataSize=8 167 srli t4, reg, 3, dataSize=2 168 ldst t1, tsg, [8, t4, t0], dataSize=8 169 ld t2, tsg, [8, t4, t0], 8, dataSize=8 170 chks reg, t1, TSSCheck 171 wrdh t3, t1, t2 172 wrdl tr, t1, reg 173 wrbase tr, t3, dataSize=8 174 limm t5, (1 << 9) 175 or t1, t1, t5 176 st t1, tsg, [8, t4, t0], dataSize=8 177}; 178 179def macroop LTR_M 180{ |
181 .serializing | 181 .serialize_after |
182 ld t5, seg, sib, disp, dataSize=2 183 chks t5, t0, TRCheck 184 limm t4, 0, dataSize=8 185 srli t4, t5, 3, dataSize=2 186 ldst t1, tsg, [8, t4, t0], dataSize=8 187 ld t2, tsg, [8, t4, t0], 8, dataSize=8 188 chks t5, t1, TSSCheck 189 wrdh t3, t1, t2 190 wrdl tr, t1, t5 191 wrbase tr, t3, dataSize=8 192 limm t5, (1 << 9) 193 or t1, t1, t5 194 st t1, tsg, [8, t4, t0], dataSize=8 195}; 196 197def macroop LTR_P 198{ | 182 ld t5, seg, sib, disp, dataSize=2 183 chks t5, t0, TRCheck 184 limm t4, 0, dataSize=8 185 srli t4, t5, 3, dataSize=2 186 ldst t1, tsg, [8, t4, t0], dataSize=8 187 ld t2, tsg, [8, t4, t0], 8, dataSize=8 188 chks t5, t1, TSSCheck 189 wrdh t3, t1, t2 190 wrdl tr, t1, t5 191 wrbase tr, t3, dataSize=8 192 limm t5, (1 << 9) 193 or t1, t1, t5 194 st t1, tsg, [8, t4, t0], dataSize=8 195}; 196 197def macroop LTR_P 198{ |
199 .serializing | 199 .serialize_after |
200 rdip t7 201 ld t5, seg, riprel, disp, dataSize=2 202 chks t5, t0, TRCheck 203 limm t4, 0, dataSize=8 204 srli t4, t5, 3, dataSize=2 205 ldst t1, tsg, [8, t4, t0], dataSize=8 206 ld t2, tsg, [8, t4, t0], 8, dataSize=8 207 chks t5, t1, TSSCheck 208 wrdh t3, t1, t2 209 wrdl tr, t1, t5 210 wrbase tr, t3, dataSize=8 211 limm t5, (1 << 9) 212 or t1, t1, t5 213 st t1, tsg, [8, t4, t0], dataSize=8 214}; 215 216def macroop LLDT_R 217{ | 200 rdip t7 201 ld t5, seg, riprel, disp, dataSize=2 202 chks t5, t0, TRCheck 203 limm t4, 0, dataSize=8 204 srli t4, t5, 3, dataSize=2 205 ldst t1, tsg, [8, t4, t0], dataSize=8 206 ld t2, tsg, [8, t4, t0], 8, dataSize=8 207 chks t5, t1, TSSCheck 208 wrdh t3, t1, t2 209 wrdl tr, t1, t5 210 wrbase tr, t3, dataSize=8 211 limm t5, (1 << 9) 212 or t1, t1, t5 213 st t1, tsg, [8, t4, t0], dataSize=8 214}; 215 216def macroop LLDT_R 217{ |
218 .serializing | 218 .serialize_after |
219 chks reg, t0, InGDTCheck, flags=(EZF,) 220 br label("end"), flags=(CEZF,) 221 limm t4, 0, dataSize=8 222 srli t4, reg, 3, dataSize=2 223 ldst t1, tsg, [8, t4, t0], dataSize=8 224 ld t2, tsg, [8, t4, t0], 8, dataSize=8 225 chks reg, t1, LDTCheck 226 wrdh t3, t1, t2 227 wrdl tsl, t1, reg 228 wrbase tsl, t3, dataSize=8 229end: 230 fault "NoFault" 231}; 232 233def macroop LLDT_M 234{ | 219 chks reg, t0, InGDTCheck, flags=(EZF,) 220 br label("end"), flags=(CEZF,) 221 limm t4, 0, dataSize=8 222 srli t4, reg, 3, dataSize=2 223 ldst t1, tsg, [8, t4, t0], dataSize=8 224 ld t2, tsg, [8, t4, t0], 8, dataSize=8 225 chks reg, t1, LDTCheck 226 wrdh t3, t1, t2 227 wrdl tsl, t1, reg 228 wrbase tsl, t3, dataSize=8 229end: 230 fault "NoFault" 231}; 232 233def macroop LLDT_M 234{ |
235 .serializing | 235 .serialize_after |
236 ld t5, seg, sib, disp, dataSize=2 237 chks t5, t0, InGDTCheck, flags=(EZF,) 238 br label("end"), flags=(CEZF,) 239 limm t4, 0, dataSize=8 240 srli t4, t5, 3, dataSize=2 241 ldst t1, tsg, [8, t4, t0], dataSize=8 242 ld t2, tsg, [8, t4, t0], 8, dataSize=8 243 chks t5, t1, LDTCheck 244 wrdh t3, t1, t2 245 wrdl tsl, t1, t5 246 wrbase tsl, t3, dataSize=8 247end: 248 fault "NoFault" 249}; 250 251def macroop LLDT_P 252{ | 236 ld t5, seg, sib, disp, dataSize=2 237 chks t5, t0, InGDTCheck, flags=(EZF,) 238 br label("end"), flags=(CEZF,) 239 limm t4, 0, dataSize=8 240 srli t4, t5, 3, dataSize=2 241 ldst t1, tsg, [8, t4, t0], dataSize=8 242 ld t2, tsg, [8, t4, t0], 8, dataSize=8 243 chks t5, t1, LDTCheck 244 wrdh t3, t1, t2 245 wrdl tsl, t1, t5 246 wrbase tsl, t3, dataSize=8 247end: 248 fault "NoFault" 249}; 250 251def macroop LLDT_P 252{ |
253 .serializing | 253 .serialize_after |
254 rdip t7 255 ld t5, seg, riprel, disp, dataSize=2 256 chks t5, t0, InGDTCheck, flags=(EZF,) 257 br label("end"), flags=(CEZF,) 258 limm t4, 0, dataSize=8 259 srli t4, t5, 3, dataSize=2 260 ldst t1, tsg, [8, t4, t0], dataSize=8 261 ld t2, tsg, [8, t4, t0], 8, dataSize=8 --- 16 unchanged lines hidden --- | 254 rdip t7 255 ld t5, seg, riprel, disp, dataSize=2 256 chks t5, t0, InGDTCheck, flags=(EZF,) 257 br label("end"), flags=(CEZF,) 258 limm t4, 0, dataSize=8 259 srli t4, t5, 3, dataSize=2 260 ldst t1, tsg, [8, t4, t0], dataSize=8 261 ld t2, tsg, [8, t4, t0], 8, dataSize=8 --- 16 unchanged lines hidden --- |