/** @file
* Inline routines for Watcom C.
*/
/*
* Copyright (C) 2010-2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* General Public License (GPL) as published by the Free Software
* Foundation, in version 2 as it comes in the "COPYING" file of the
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
*/
void int_enable(void);
void int_disable(void);
"pushf" \
"pop ax" \
#pragma aux int_restore = \
"push ax" \
"popf" \
void halt(void);
void halt_forever(void);
#pragma aux halt_forever = \
"forever:" \
"hlt" \
"jmp forever" \
"push ds" \
"mov ds, dx" \
"rep movsw" \
"pop ds" \
#pragma aux rep_outsb = ".286" "rep outs dx,byte ptr es:[si]" parm [es si] [cx] [dx] value [es si] modify exact [cx si];
#pragma aux rep_outsw = ".286" "rep outs dx,word ptr es:[si]" parm [es si] [cx] [dx] value [es si] modify exact [cx si];
#pragma aux rep_outsd = ".386" "rep outs dx,dword ptr es:[si]" parm [es si] [cx] [dx] value [es si] modify exact [cx si];
"xchg ah, al" \
"xchg dh, dl" \
"xchg ax, dx" \
//@todo: Do CLD elsewhere!
"cld" \
"jcxz no_copy" \
"rep stosb" \
"no_copy:" \
//@todo: Do CLD elsewhere!
"cld" \
"jcxz no_copy" \
"rep stosw" \
"no_copy:" \
//@todo: Do CLD elsewhere!
extern void memcpyb(uint16_t dseg, uint16_t doffset, uint16_t sseg, uint16_t soffset, uint16_t count);
"cld" \
"jcxz no_copy" \
"push ds" \
"mov ds, dx" \
"rep movsb" \
"pop ds" \
"no_copy:" \
//@todo: Do CLD elsewhere!
extern void memcpyw(uint16_t dseg, uint16_t doffset, uint16_t sseg, uint16_t soffset, uint16_t count);
"cld" \
"jcxz no_copy" \
"push ds" \
"mov ds, dx" \
"rep movsw" \
"pop ds" \
"no_copy:" \