diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/mvdm/softpc.new/base/ccpu386/movsx.c | |
download | NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2 NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip |
Diffstat (limited to 'private/mvdm/softpc.new/base/ccpu386/movsx.c')
-rw-r--r-- | private/mvdm/softpc.new/base/ccpu386/movsx.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/private/mvdm/softpc.new/base/ccpu386/movsx.c b/private/mvdm/softpc.new/base/ccpu386/movsx.c new file mode 100644 index 000000000..23e525e18 --- /dev/null +++ b/private/mvdm/softpc.new/base/ccpu386/movsx.c @@ -0,0 +1,56 @@ +/*[ + +movsx.c + +LOCAL CHAR SccsID[]="@(#)movsx.c 1.5 02/09/94"; + +MOVSX CPU Functions. +-------------------- + +]*/ + + +#include <insignia.h> + +#include <host_def.h> +#include <xt.h> +#include <c_main.h> +#include <c_addr.h> +#include <c_bsic.h> +#include <c_prot.h> +#include <c_seg.h> +#include <c_stack.h> +#include <c_xcptn.h> +#include <c_reg.h> +#include <movsx.h> + + +/* + ===================================================================== + EXTERNAL ROUTINES START HERE + ===================================================================== + */ + + +/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ +/* Generic - one size fits all 'movsx'. */ +/* NB. This function sign extends to 32-bits. */ +/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ +GLOBAL VOID +MOVSX + +IFN3( + IU32 *, pop1, /* pntr to dst/lsrc operand */ + IU32, op2, /* rsrc operand */ + IUM8, op_sz /* 8 or 16-bit (original rsrc operand size) */ + ) + + + { + if ( SZ2MSB(op_sz) & op2 ) /* sign bit set? */ + { + /* or in sign extension */ + op2 = op2 | ~SZ2MASK(op_sz); + } + *pop1 = op2; + } |