Changeset 41470 in vbox
- Timestamp:
- May 28, 2012 11:04:07 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/PGM.cpp
r41468 r41470 101 101 * PGM implements the A20 gate masking when translating a virtual guest address 102 102 * into a physical address for CPU access, i.e. PGMGstGetPage (and friends) and 103 * the code reading the guest page table entries during shadowing. 103 * the code reading the guest page table entries during shadowing. The masking 104 * is done consistenly for all CPU modes, paged ones included. Large pages are 105 * also masked correctly. (On current CPUs, experiments indicates that AMD does 106 * not apply A20M in paged modes and intel only does it for the 2nd MB of 107 * memory.) 104 108 * 105 109 * The A20 gate implementation is per CPU core. It can be configured on a per 106 110 * core basis via the keyboard device and PC architecture device. This is 107 111 * probably not exactly how real CPUs do it, but SMP and A20 isn't a place where 108 * guest OSes try pushing things anyway, so who cares. 112 * guest OSes try pushing things anyway, so who cares. (On current real systems 113 * the A20M signal is probably only sent to the boot CPU and it affects all 114 * thread and probably all cores in that package.) 109 115 * 110 116 * The keyboard device and the PC architecture device doesn't OR their A20 111 117 * config bits together, rather they are currently implemented such that they 112 118 * mirror the CPU state. So, flipping the bit in either of them will change the 113 * A20 state. 119 * A20 state. (On real hardware the bits of the two devices should probably be 120 * ORed together to indicate enabled, i.e. both needs to be cleared to disable 121 * A20 masking.) 114 122 * 115 123 * The A20 state will change immediately, transmeta fashion. There is no delays 116 * due to buses, wiring or other physical stuff. 124 * due to buses, wiring or other physical stuff. (On real hardware there are 125 * normally delays, the delays differs between the two devices and probably also 126 * between chipsets and CPU generations. Note that it's said that transmeta CPUs 127 * does the change immediately like us, they apparently intercept/handles the 128 * port accesses in microcode. Neat.) 117 129 * 118 130 * @sa http://en.wikipedia.org/wiki/A20_line#The_80286_and_the_high_memory_area
Note:
See TracChangeset
for help on using the changeset viewer.