VirtualBox

Ignore:
Timestamp:
Aug 5, 2010 12:28:18 PM (14 years ago)
Author:
vboxsync
Message:

PGM: Replaced the hazzardous raw-mode context dynamic mapping code with the PGMR0DynMap code used by darwin/x86. This is a risky change but it should pay off once stable by providing 100% certainty that dynamically mapped pages aren't resued behind our back (this has been observed in seemingly benign code paths recently).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMGC/TRPMGCHandlersA.asm

    r28800 r31402  
    44;
    55
    6 ; Copyright (C) 2006-2007 Oracle Corporation
     6; Copyright (C) 2006-2010 Oracle Corporation
    77;
    88; This file is part of VirtualBox Open Source Edition (OSE), as
     
    3434extern IMPNAME(g_TRPM)                  ; where there is a pointer to the real symbol. PE imports
    3535extern IMPNAME(g_TRPMCPU)               ; are a bit confusing at first... :-)
    36 extern IMPNAME(g_VM)                   
     36extern IMPNAME(g_VM)
    3737extern NAME(CPUMGCRestoreInt)
    3838extern NAME(cpumHandleLazyFPUAsm)
    3939extern NAME(CPUMHyperSetCtxCore)
    4040extern NAME(trpmGCTrapInGeneric)
    41 extern NAME(TRPMGCHyperTrap0bHandler)
    42 extern NAME(TRPMGCHyperTrap0dHandler)
    43 extern NAME(TRPMGCHyperTrap0eHandler)
    4441extern NAME(TRPMGCTrap01Handler)
     42extern NAME(TRPMGCHyperTrap01Handler)
    4543%ifdef VBOX_WITH_NMI
    4644extern NAME(TRPMGCTrap02Handler)
     45extern NAME(TRPMGCHyperTrap02Handler)
    4746%endif
    4847extern NAME(TRPMGCTrap03Handler)
     48extern NAME(TRPMGCHyperTrap03Handler)
    4949extern NAME(TRPMGCTrap06Handler)
     50extern NAME(TRPMGCTrap07Handler)
    5051extern NAME(TRPMGCTrap0bHandler)
     52extern NAME(TRPMGCHyperTrap0bHandler)
    5153extern NAME(TRPMGCTrap0dHandler)
     54extern NAME(TRPMGCHyperTrap0dHandler)
    5255extern NAME(TRPMGCTrap0eHandler)
    53 extern NAME(TRPMGCTrap07Handler)
     56extern NAME(TRPMGCHyperTrap0eHandler)
    5457
    5558;; IMPORTANT all COM_ functions trashes esi, some edi and the LOOP_SHORT_WHILE kills ecx.
     
    7174                                        ; =============================================================
    7275    dd 0                                ;  0 - #DE - F   - N - Divide error
    73     dd NAME(TRPMGCTrap01Handler)        ;  1 - #DB - F/T - N - Single step, INT 1 instruction
     76    dd NAME(TRPMGCHyperTrap01Handler)   ;  1 - #DB - F/T - N - Single step, INT 1 instruction
    7477%ifdef VBOX_WITH_NMI
    75     dd NAME(TRPMGCTrap02Handler)        ;  2 -     - I   - N - Non-Maskable Interrupt (NMI)
     78    dd NAME(TRPMGCHyperTrap02Handler)   ;  2 -     - I   - N - Non-Maskable Interrupt (NMI)
    7679%else
    7780    dd 0                                ;  2 -     - I   - N - Non-Maskable Interrupt (NMI)
    7881%endif
    79     dd NAME(TRPMGCTrap03Handler)        ;  3 - #BP - T   - N - Breakpoint, INT 3 instruction.
     82    dd NAME(TRPMGCHyperTrap03Handler)   ;  3 - #BP - T   - N - Breakpoint, INT 3 instruction.
    8083    dd 0                                ;  4 - #OF - T   - N - Overflow, INTO instruction.
    8184    dd 0                                ;  5 - #BR - F   - N - BOUND Range Exceeded, BOUND instruction.
     
    271274    mov     [esp + CPUMCTXCORE.eflags], eax
    272275
    273 %if GC_ARCH_BITS == 64   
     276%if GC_ARCH_BITS == 64
    274277    ; zero out the high dwords
    275278    mov     dword [esp + CPUMCTXCORE.eax + 4], 0
     
    775778    mov     [esp + CPUMCTXCORE.ss], eax
    776779
    777 %if GC_ARCH_BITS == 64   
     780%if GC_ARCH_BITS == 64
    778781    ; zero out the high dwords
    779782    mov     dword [esp + CPUMCTXCORE.eax + 4], 0
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