VirtualBox

Ignore:
Timestamp:
Oct 28, 2018 5:00:27 PM (6 years ago)
Author:
vboxsync
Message:

IPRT: Make Watcom C an alterntive for compiling the OS/2 kernel code (GA mainly), governed by VBOX_USE_WATCOM_FOR_OS2.

Location:
trunk/src/VBox/Runtime/common/string/watcom
Files:
1 added
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/string/watcom/memcpy.asm

    r75123 r75129  
    11; $Id$
    22;; @file
    3 ; IPRT - No-CRT memcpy - AMD64 & X86.
     3; IPRT - No-CRT memcpy - Watcom register calling convention.
    44;
    55
     
    2727%include "iprt/asmdefs.mac"
    2828
    29 BEGINCODE
     29%define ASM_CALL32_WATCOM
     30%define NAME(name) name %+ _
     31%include "common/string/memcpy.asm"
    3032
    31 ;;
    32 ; @param    pvDst   gcc: rdi  msc: rcx  x86:[esp+4]
    33 ; @param    pvSrc   gcc: rsi  msc: rdx  x86:[esp+8]
    34 ; @param    cb      gcc: rdx  msc: r8   x86:[esp+0ch]
    35 RT_NOCRT_BEGINPROC memcpy
    36         cld
    37 
    38         ; Do the bulk of the work.
    39 %ifdef RT_ARCH_AMD64
    40  %ifdef ASM_CALL64_MSC
    41         mov     r10, rdi                ; save
    42         mov     r11, rsi                ; save
    43         mov     rdi, rcx
    44         mov     rsi, rdx
    45         mov     rcx, r8
    46         mov     rdx, r8
    47  %else
    48         mov     rcx, rdx
    49  %endif
    50         mov     rax, rdi                ; save the return value
    51         shr     rcx, 3
    52         rep movsq
    53 %else
    54         push    edi
    55         push    esi
    56 
    57         mov     ecx, [esp + 0ch + 8]
    58         mov     edi, [esp + 04h + 8]
    59         mov     esi, [esp + 08h + 8]
    60         mov     edx, ecx
    61         mov     eax, edi                ; save the return value
    62         shr     ecx, 2
    63         rep movsd
    64 %endif
    65 
    66         ; The remaining bytes.
    67 %ifdef RT_ARCH_AMD64
    68         test    dl, 4
    69         jz      .dont_move_dword
    70         movsd
    71 %endif
    72 .dont_move_dword:
    73         test    dl, 2
    74         jz      .dont_move_word
    75         movsw
    76 .dont_move_word:
    77         test    dl, 1
    78         jz      .dont_move_byte
    79         movsb
    80 .dont_move_byte:
    81 
    82 %ifdef RT_ARCH_AMD64
    83  %ifdef ASM_CALL64_MSC
    84         mov     rdi, r10
    85         mov     rsi, r11
    86  %endif
    87 %else
    88         pop     esi
    89         pop     edi
    90 %endif
    91         ret
    92 ENDPROC RT_NOCRT(memcpy)
    93 
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