diff options
Diffstat (limited to 'contrib/syslinux-4.02/dos/memmove.S')
-rw-r--r-- | contrib/syslinux-4.02/dos/memmove.S | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/contrib/syslinux-4.02/dos/memmove.S b/contrib/syslinux-4.02/dos/memmove.S new file mode 100644 index 0000000..1ab2cb2 --- /dev/null +++ b/contrib/syslinux-4.02/dos/memmove.S @@ -0,0 +1,36 @@ +# +# memmove.S +# +# Simple 16-bit memmove() implementation +# + + .text + .code16gcc + .globl memmove + .type memmove, @function +memmove: + pushw %di + pushw %si + movw %ax,%di + movw %dx,%si + cmpw %si,%di + ja 1f + # The third argument is already in cx + cld + rep ; movsb +2: + popw %si + popw %di + ret + +1: /* si <= di, need reverse copy */ + add %cx,%di + add %cx,%si + dec %di + dec %si + std + rep ; movsb + cld + jmp 2b + + .size memmove,.-memmove |