VirtualBox

Changeset 41470 in vbox


Ignore:
Timestamp:
May 28, 2012 11:04:07 PM (13 years ago)
Author:
vboxsync
Message:

PGM.cpp: Some additional words.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/PGM.cpp

    r41468 r41470  
    101101 * PGM implements the A20 gate masking when translating a virtual guest address
    102102 * 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.)
    104108 *
    105109 * The A20 gate implementation is per CPU core.  It can be configured on a per
    106110 * core basis via the keyboard device and PC architecture device.  This is
    107111 * 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.)
    109115 *
    110116 * The keyboard device and the PC architecture device doesn't OR their A20
    111117 * config bits together, rather they are currently implemented such that they
    112118 * 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.)
    114122 *
    115123 * 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.)
    117129 *
    118130 * @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.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette