With a 16-bit operand, lgdt/lidt will load only a 24-bit base address, ignoring the high-order bits. This meant that we could fail to fully restore the GDT across a call into gPXE, if the GDT happened to be located above the 16MB mark. Not all of our lgdt/lidt instructions require a data32 prefix (for example, reloading the real-mode IDT can never require a 32-bit base address), but by adding them everywhere we will hopefully not forget the necessary ones in future.tags/v0.9.6
|
|
||
341 |
|
341 |
|
342 |
|
342 |
|
343 |
|
343 |
|
344 |
|
|
|
|
344 |
|
|
345 |
|
345 |
|
346 |
|
346 |
|
347 |
|
347 |
|
|
|
||
377 |
|
377 |
|
378 |
|
378 |
|
379 |
|
379 |
|
380 |
|
|
|
|
380 |
|
|
381 |
|
381 |
|
382 |
|
382 |
|
383 |
|
383 |
|
|
|
||
203 |
|
203 |
|
204 |
|
204 |
|
205 |
|
205 |
|
206 |
|
|
|
207 |
|
|
|
|
206 |
|
|
|
207 |
|
|
208 |
|
208 |
|
209 |
|
209 |
|
210 |
|
210 |
|
|
|
||
316 |
|
316 |
|
317 |
|
317 |
|
318 |
|
318 |
|
319 |
|
|
|
|
319 |
|
|
320 |
|
320 |
|
321 |
|
321 |
|
322 |
|
322 |
|
|
|
||
424 |
|
424 |
|
425 |
|
425 |
|
426 |
|
426 |
|
427 |
|
|
|
428 |
|
|
|
|
427 |
|
|
|
428 |
|
|
429 |
|
429 |
|
430 |
|
430 |
|
431 |
|
431 |
|