interrupts_and_exceptions.py (5661:443e6f925027) interrupts_and_exceptions.py (5685:a55b78e4b6d6)
1# Copyright (c) 2007-2008 The Hewlett-Packard Development Company
2# All rights reserved.
3#
4# Redistribution and use of this software in source and binary forms,
5# with or without modification, are permitted provided that the
6# following conditions are met:
7#
8# The software must be used only for Non-Commercial Use which means any

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

185 br label("processSSDescriptor")
186globalSSDescriptor:
187 ld t7, tsg, [1, t0, t7], dataSize=8
188processSSDescriptor:
189 chks t2, t7, dataSize=8
190
191 # This actually updates state which is wrong. It should wait until we know
192 # we're not going to fault. Unfortunately, that's hard to do.
1# Copyright (c) 2007-2008 The Hewlett-Packard Development Company
2# All rights reserved.
3#
4# Redistribution and use of this software in source and binary forms,
5# with or without modification, are permitted provided that the
6# following conditions are met:
7#
8# The software must be used only for Non-Commercial Use which means any

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

185 br label("processSSDescriptor")
186globalSSDescriptor:
187 ld t7, tsg, [1, t0, t7], dataSize=8
188processSSDescriptor:
189 chks t2, t7, dataSize=8
190
191 # This actually updates state which is wrong. It should wait until we know
192 # we're not going to fault. Unfortunately, that's hard to do.
193 wrdl cs, t7, t2
194 wrsel cs, t2
193 wrdl ss, t7, t2
194 wrsel ss, t2
195
196###
197### From this point downwards, we can't fault. We can update user visible state.
198###
199 # RSP.s = temp_RSP
200 mov rsp, rsp, t6, dataSize=ssz
201
202 #}

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

219 # seg = NULL
220 # }
221 #}
222
223skipSegmentSquashing:
224
225 # Ignore this for now.
226 #RFLAGS.v = temp_RFLAGS
195
196###
197### From this point downwards, we can't fault. We can update user visible state.
198###
199 # RSP.s = temp_RSP
200 mov rsp, rsp, t6, dataSize=ssz
201
202 #}

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

219 # seg = NULL
220 # }
221 #}
222
223skipSegmentSquashing:
224
225 # Ignore this for now.
226 #RFLAGS.v = temp_RFLAGS
227 wrflags t0, t3
227 # VIF,VIP,IOPL only changed if (old_CPL = 0)
228 # IF only changed if (old_CPL <= old_RFLAGS.IOPL)
229 # VM unchanged
230 # RF cleared
231
232 #RIP = temp_RIP
233 wrip t0, t1, dataSize=ssz
234};
235
236def macroop IRET_VIRT {
237 panic "Virtual mode iret isn't implemented!"
238};
239'''
240#let {{
241# class INT(Inst):
242# "GenFault ${new UnimpInstFault}"
243# class INTO(Inst):
244# "GenFault ${new UnimpInstFault}"
245#}};
228 # VIF,VIP,IOPL only changed if (old_CPL = 0)
229 # IF only changed if (old_CPL <= old_RFLAGS.IOPL)
230 # VM unchanged
231 # RF cleared
232
233 #RIP = temp_RIP
234 wrip t0, t1, dataSize=ssz
235};
236
237def macroop IRET_VIRT {
238 panic "Virtual mode iret isn't implemented!"
239};
240'''
241#let {{
242# class INT(Inst):
243# "GenFault ${new UnimpInstFault}"
244# class INTO(Inst):
245# "GenFault ${new UnimpInstFault}"
246#}};