VirtualBox

Changeset 66167 in vbox for trunk/src/VBox/Runtime/common


Ignore:
Timestamp:
Mar 20, 2017 1:20:49 PM (8 years ago)
Author:
vboxsync
Message:

bs3kit: Added ASMCpuIdExSlow.asm.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/asm/ASMCpuIdExSlow.asm

    r62477 r66167  
    5050        mov     xBP, xSP
    5151        push    xBX
    52 %ifdef RT_ARCH_X86
     52%if ARCH_BITS == 32
    5353        push    edi
     54%elif ARCH_BITS == 16
     55        push    di
     56        push    es
    5457%endif
    5558
    5659%ifdef ASM_CALL64_MSC
     60 %if ARCH_BITS != 64
     61  %error ARCH_BITS mismatch?
     62 %endif
    5763        mov     eax, ecx
    5864        mov     ebx, edx
     
    6975        mov     r10, [rbp + 10h]
    7076        mov     r11, [rbp + 18h]
    71 %elifdef RT_ARCH_X86
    72         mov     eax, [ebp + 08h]
    73         mov     ebx, [ebp + 0ch]
    74         mov     ecx, [ebp + 10h]
    75         mov     edx, [ebp + 14h]
    76         mov     edi, [ebp + 18h]
     77%elif ARCH_BITS == 32
     78        mov     eax, [xBP + 08h]
     79        mov     ebx, [xBP + 0ch]
     80        mov     ecx, [xBP + 10h]
     81        mov     edx, [xBP + 14h]
     82        mov     edi, [xBP + 18h]
     83%elif ARCH_BITS == 16
     84        mov     eax, [xBP + 08h - 4]
     85        mov     ebx, [xBP + 0ch - 4]
     86        mov     ecx, [xBP + 10h - 4]
     87        mov     edx, [xBP + 14h - 4]
    7788%else
    7889 %error unsupported arch
     
    8596        jz      .store_ebx
    8697        mov     [r8], eax
    87 %else
     98%elif ARCH_BITS == 32
    8899        test    edi, edi
    89100        jz      .store_ebx
    90101        mov     [edi], eax
     102%else
     103        cmp     dword [bp + 18h - 4], 0
     104        je      .store_ebx
     105        les     di, [bp + 18h - 4]
     106        mov     [es:di], eax
    91107%endif
    92108.store_ebx:
     
    96112        jz      .store_ecx
    97113        mov     [r9], ebx
    98 %else
     114%elif ARCH_BITS == 32
    99115        mov     edi, [ebp + 1ch]
    100116        test    edi, edi
    101117        jz      .store_ecx
    102118        mov     [edi], ebx
     119%else
     120        cmp     dword [bp + 1ch - 4], 0
     121        je      .store_ecx
     122        les     di, [bp + 1ch - 4]
     123        mov     [es:di], ebx
    103124%endif
    104125.store_ecx:
     
    108129        jz      .store_edx
    109130        mov     [r10], ecx
    110 %else
     131%elif ARCH_BITS == 32
    111132        mov     edi, [ebp + 20h]
    112133        test    edi, edi
    113134        jz      .store_edx
    114135        mov     [edi], ecx
     136%else
     137        cmp     dword [bp + 20h - 4], 0
     138        je      .store_edx
     139        les     di, [bp + 20h - 4]
     140        mov     [es:di], ecx
    115141%endif
    116142.store_edx:
     
    120146        jz      .done
    121147        mov     [r11], edx
    122 %else
     148%elif ARCH_BITS == 32
    123149        mov     edi, [ebp + 24h]
    124150        test    edi, edi
    125151        jz      .done
    126152        mov     [edi], edx
     153%else
     154        cmp     dword [bp + 24h - 4], 0
     155        je      .done
     156        les     di, [bp + 24h - 4]
     157        mov     [es:di], edx
    127158%endif
    128159.done:
    129160
    130 %ifdef RT_ARCH_X86
     161%if ARCH_BITS == 32
    131162        pop     edi
     163%elif ARCH_BITS == 16
     164        pop     es
     165        pop     di
    132166%endif
    133167        pop     xBX
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