Some i086 updates.
This commit is contained in:
+832
-832
File diff suppressed because it is too large
Load Diff
@@ -28,7 +28,7 @@ vpath %.c $(top_srcdir)/src/stub/src/c
|
|||||||
STUBS =
|
STUBS =
|
||||||
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),)
|
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),)
|
||||||
ifneq ($(wildcard $(WATCOM)/binl/.),)
|
ifneq ($(wildcard $(WATCOM)/binl/.),)
|
||||||
STUBS += lzma_d_cf.S lzma_d_cs.S
|
STUBS += lzma_d_cf.S ##lzma_d_cs.S
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -48,23 +48,65 @@ lzma_d_c%.S : tc_list = method-lzma default
|
|||||||
lzma_d_c%.S : tc_bfdname =
|
lzma_d_c%.S : tc_bfdname =
|
||||||
|
|
||||||
c := tc.method-lzma.wcc
|
c := tc.method-lzma.wcc
|
||||||
$c = $(WATCOM)/binl/wcc -zq -bt=dos -0
|
$c = $(WATCOM)/binl/wcc -zq -bt=dos
|
||||||
$c += -mc
|
$c += -mc
|
||||||
$c += -zm -zc
|
$c += -zm -zc
|
||||||
$c += -os -s -d0
|
$c += -os -s -0 -d0
|
||||||
$c += -w5 -we -fr=/dev/null
|
$c += -w5 -we -fr=/dev/null
|
||||||
$c += -D__INT_MAX__=32767
|
$c += -D__INT_MAX__=32767
|
||||||
$c += -D_LZMA_UINT32_IS_ULONG=1
|
|
||||||
$c += -I$(UPX_LZMADIR)
|
$c += -I$(UPX_LZMADIR)
|
||||||
$c += -I$(top_srcdir)/src
|
$c += -I$(top_srcdir)/src
|
||||||
|
|
||||||
|
ifneq ($(wildcard $(BC502DIR)/bin/.),)
|
||||||
|
c := tc.method-lzma.bcc
|
||||||
|
$c = @$(WINEENV) CL='$(CL)' wine cmd.exe /c tmp/bcc.bat
|
||||||
|
$c += -mc
|
||||||
|
$c += -O1 -1
|
||||||
|
$c += -w
|
||||||
|
$c += -D__INT_MAX__=32767
|
||||||
|
##$c += -I$(subst \,/,$(shell winepath -s z:$(realpath $(UPX_LZMADIR))))
|
||||||
|
$c += -I$(subst \,/,$(shell winepath -s z:$(realpath $(UPX_LZMADIR)/C/7zip/Compress/LZMA_C)))
|
||||||
|
$c += -I$(top_srcdir)/src
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(wildcard $(DM847DIR)/bin/.),)
|
||||||
|
c := tc.method-lzma.dmc
|
||||||
|
$c = @$(WINEENV) CFLAGS='$(DMC)' wine cmd.exe /c tmp/dmc.bat
|
||||||
|
$c += -mc
|
||||||
|
$c += -NS
|
||||||
|
$c += -w-
|
||||||
|
DMC := -o -0
|
||||||
|
DMC += -D__INT_MAX__=32767
|
||||||
|
DMC += -I$(shell winepath -s z:$(realpath $(UPX_LZMADIR)))
|
||||||
|
DMC += -I$(shell winepath -s z:$(realpath $(top_srcdir)/src))
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(wildcard $(VC152DIR)/bin/.),)
|
||||||
|
c := tc.method-lzma.cl
|
||||||
|
$c = @$(WINEENV) CL='$(CL)' wine cmd.exe /c tmp/cl.bat
|
||||||
|
$c += -AC
|
||||||
|
$c += -Gy
|
||||||
|
$c += -O1 -Gf -Gs -G0
|
||||||
|
$c += -W4
|
||||||
|
CL := -nologo
|
||||||
|
CL += -D__INT_MAX__=32767
|
||||||
|
CL += -I$(shell winepath -s z:$(realpath $(UPX_LZMADIR)))
|
||||||
|
CL += -I$(shell winepath -s z:$(realpath $(top_srcdir)/src))
|
||||||
|
endif
|
||||||
|
|
||||||
tc.method-lzma.dmpobj = $(WATCOM)/binl/dmpobj
|
tc.method-lzma.dmpobj = $(WATCOM)/binl/dmpobj
|
||||||
tc.method-lzma.wdis = $(WATCOM)/binl/wdis
|
tc.method-lzma.wdis = $(WATCOM)/binl/wdis
|
||||||
tc.method-lzma.wdump = $(WATCOM)/binl/wdump
|
tc.method-lzma.wdump = $(WATCOM)/binl/wdump
|
||||||
|
|
||||||
lzma_d_c%.S : lzma_d_c.c
|
lzma_d_c%.S : lzma_d_c.c $(MAKEFILE_LIST)
|
||||||
$(call tc,wcc) $(PP_FLAGS) -fo=tmp/$T.obj $<
|
$(call tc,wcc) $(PP_FLAGS) -fo=tmp/$T.obj $<
|
||||||
$(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
$(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||||
|
## $(call tc,dmc) $(PP_FLAGS) -c -otmp/$T.obj $<
|
||||||
|
## $(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||||
|
## $(call tc,cl) $(PP_FLAGS) -c -Fotmp/$T.obj $<
|
||||||
|
## $(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||||
|
## $(call tc,bcc) $(PP_FLAGS) -c -otmp/$T.obj $<
|
||||||
|
## $(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||||
|
|
||||||
FIXME:
|
FIXME:
|
||||||
$(call tc,f-objstrip,tmp/$T.o)
|
$(call tc,f-objstrip,tmp/$T.o)
|
||||||
@@ -83,11 +125,57 @@ lzma_d_cs.% : LABEL_PREFIX = .Ls
|
|||||||
# // cc_test
|
# // cc_test
|
||||||
# ************************************************************************/
|
# ************************************************************************/
|
||||||
|
|
||||||
|
WINEENV = env
|
||||||
|
WINEENV = env -i DISPLAY='$(DISPLAY)' HOME='$(HOME)' PATH='$(PATH)' USER='$(USER)'
|
||||||
|
|
||||||
|
# work around limitations of wine's cmd.exe
|
||||||
|
define mkbat
|
||||||
|
echo -E '@set PATH=$3;%PATH%' > $1
|
||||||
|
echo -E '@set a=%1 %2 %3 %4 %5 %6 %7 %8 %9' >> $1
|
||||||
|
echo -e '@shift\n@shift\n@shift\n@shift\n@shift' >> $1
|
||||||
|
echo -e '@shift\n@shift\n@shift\n@shift' >> $1
|
||||||
|
echo -E '@set b=%1 %2 %3 %4 %5 %6 %7 %8 %9' >> $1
|
||||||
|
echo -e '@shift\n@shift\n@shift\n@shift\n@shift' >> $1
|
||||||
|
echo -e '@shift\n@shift\n@shift\n@shift' >> $1
|
||||||
|
echo -E '$2 %a% %b% %1 %2 %3 %4 %5 %6 %7 %8 %9' >> $1
|
||||||
|
unix2dos -q $1
|
||||||
|
endef
|
||||||
|
|
||||||
ifneq ($(wildcard $(WATCOM)/binl/.),)
|
ifneq ($(wildcard $(WATCOM)/binl/.),)
|
||||||
cc_test_wcc : tc_list = method-lzma default
|
cc_test_wc : tc_list = method-lzma default
|
||||||
cc_test_wcc: cc_test.c
|
cc_test_wc: cc_test.c
|
||||||
$(call tc,wcc) $(PP_FLAGS) -fo=tmp/$T.obj $<
|
$(call tc,wcc) $(PP_FLAGS) -fo=tmp/$T.obj $<
|
||||||
$(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
$(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||||
## cat tmp/$T.obj.disasm
|
## cat tmp/$T.obj.disasm
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq ($(wildcard $(BC502DIR)/bin/.),)
|
||||||
|
tmp/bcc.bat: tmp/.tmp-stamp $(MAKEFILE_LIST)
|
||||||
|
@$(call mkbat,$@,bcc.exe,$(BC502WINDIR)\\bin)
|
||||||
|
cc_test_bc : tc_list = method-lzma default
|
||||||
|
cc_test_bc: cc_test.c tmp/bcc.bat
|
||||||
|
$(call tc,bcc) $(PP_FLAGS) -c -otmp/$T.obj $<
|
||||||
|
$(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||||
|
## cat tmp/$T.obj.disasm
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(wildcard $(DM847DIR)/bin/.),)
|
||||||
|
tmp/dmc.bat: tmp/.tmp-stamp $(MAKEFILE_LIST)
|
||||||
|
@$(call mkbat,$@,dmc.exe,$(DM847WINDIR)\\bin)
|
||||||
|
cc_test_dm : tc_list = method-lzma default
|
||||||
|
cc_test_dm: cc_test.c tmp/dmc.bat
|
||||||
|
$(call tc,dmc) $(PP_FLAGS) -c -otmp/$T.obj $<
|
||||||
|
$(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||||
|
## cat tmp/$T.obj.disasm
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(wildcard $(VC152DIR)/bin/.),)
|
||||||
|
tmp/cl.bat: tmp/.tmp-stamp $(MAKEFILE_LIST)
|
||||||
|
@$(call mkbat,$@,cl.exe,$(VC152WINDIR)\\bin)
|
||||||
|
cc_test_vc : tc_list = method-lzma default
|
||||||
|
cc_test_vc: cc_test.c tmp/cl.bat
|
||||||
|
$(call tc,cl) $(PP_FLAGS) -c -Fotmp/$T.obj $<
|
||||||
|
$(call tc,wdis) tmp/$T.obj | $(RTRIM) > tmp/$T.obj.disasm
|
||||||
|
## cat tmp/$T.obj.disasm
|
||||||
|
endif
|
||||||
|
|
||||||
|
|||||||
@@ -85,5 +85,10 @@ int16_t __cdecl i2m(int16_t a, int16_t b) { return a * b; }
|
|||||||
uint32_t __cdecl u2m4(uint16_t a, uint16_t b) { return a * b; }
|
uint32_t __cdecl u2m4(uint16_t a, uint16_t b) { return a * b; }
|
||||||
int32_t __cdecl i2m4(int16_t a, int16_t b) { return a * b; }
|
int32_t __cdecl i2m4(int16_t a, int16_t b) { return a * b; }
|
||||||
|
|
||||||
|
uint16_t __cdecl u2shl12(uint16_t a) { return a << 12; }
|
||||||
|
uint32_t __cdecl u4shl14(uint32_t a) { return a << 12; }
|
||||||
|
uint16_t __cdecl u2shlv(uint16_t a, unsigned v) { return a << v; }
|
||||||
|
uint32_t __cdecl u4shlv(uint32_t a, unsigned v) { return a << v; }
|
||||||
|
|
||||||
|
|
||||||
/* vim:set ts=4 et: */
|
/* vim:set ts=4 et: */
|
||||||
|
|||||||
@@ -142,7 +142,7 @@
|
|||||||
.macro M_WCC_PIA_086
|
.macro M_WCC_PIA_086
|
||||||
add ax, bx
|
add ax, bx
|
||||||
adc cx, 0
|
adc cx, 0
|
||||||
xchg cx, bx
|
mov cx, bx
|
||||||
mov cl, _AHSHIFT
|
mov cl, _AHSHIFT
|
||||||
shl bx, cl
|
shl bx, cl
|
||||||
add dx, bx
|
add dx, bx
|
||||||
@@ -159,7 +159,7 @@
|
|||||||
.macro M_WCC_PIS_086
|
.macro M_WCC_PIS_086
|
||||||
sub ax, bx
|
sub ax, bx
|
||||||
adc cx, 0
|
adc cx, 0
|
||||||
xchg cx, bx
|
mov cx, bx
|
||||||
mov cl, _AHSHIFT
|
mov cl, _AHSHIFT
|
||||||
shl bx, cl
|
shl bx, cl
|
||||||
sub dx, bx
|
sub dx, bx
|
||||||
@@ -174,12 +174,17 @@
|
|||||||
|
|
||||||
// huge pointer diff: dx:ax = dx:ax - cx:bx
|
// huge pointer diff: dx:ax = dx:ax - cx:bx
|
||||||
.macro M_WCC_PTS
|
.macro M_WCC_PTS
|
||||||
|
// normalize
|
||||||
// FIXME
|
// FIXME
|
||||||
|
// subtract
|
||||||
|
sub ax, bx
|
||||||
|
sbb dx, cx
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
|
||||||
// huge pointer compare: set zero and carry flags: dx:ax cmp cx:bx
|
// huge pointer compare: set zero and carry flags: dx:ax cmp cx:bx
|
||||||
.macro M_WCC_PTC
|
.macro M_WCC_PTC
|
||||||
|
// FIXME: should we normalize the pointers ???
|
||||||
local L1
|
local L1
|
||||||
cmp dx, cx
|
cmp dx, cx
|
||||||
jnes L1
|
jnes L1
|
||||||
|
|||||||
@@ -39,10 +39,15 @@
|
|||||||
#undef _LZMA_PROB32
|
#undef _LZMA_PROB32
|
||||||
#undef _LZMA_LOC_OPT
|
#undef _LZMA_LOC_OPT
|
||||||
#endif
|
#endif
|
||||||
#if (ACC_ARCH_I086) && (ACC_CC_WATCOMC)
|
#if (ACC_ARCH_I086)
|
||||||
typedef unsigned char __huge Byte;
|
# define Byte unsigned char
|
||||||
# define _7ZIP_BYTE_DEFINED 1
|
# define _7ZIP_BYTE_DEFINED 1
|
||||||
#endif
|
#endif
|
||||||
|
#if !defined(_LZMA_UINT32_IS_ULONG)
|
||||||
|
# if defined(__INT_MAX__) && ((__INT_MAX__)+0 == 32767)
|
||||||
|
# define _LZMA_UINT32_IS_ULONG 1
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
|
||||||
@@ -58,7 +63,11 @@ ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(CLzmaDecoderState) == 16)
|
|||||||
#define CLzmaDecoderState CLzmaDecoderState_dummy
|
#define CLzmaDecoderState CLzmaDecoderState_dummy
|
||||||
#define LzmaDecodeProperties LzmaDecodeProperties_dummy
|
#define LzmaDecodeProperties LzmaDecodeProperties_dummy
|
||||||
#define LzmaDecode LzmaDecode_dummy
|
#define LzmaDecode LzmaDecode_dummy
|
||||||
|
#if (ACC_CC_BORLANDC)
|
||||||
|
#include "LzmaDecode.h"
|
||||||
|
#else
|
||||||
#include "C/7zip/Compress/LZMA_C/LzmaDecode.h"
|
#include "C/7zip/Compress/LZMA_C/LzmaDecode.h"
|
||||||
|
#endif
|
||||||
#undef CLzmaDecoderState
|
#undef CLzmaDecoderState
|
||||||
#undef LzmaDecodeProperties
|
#undef LzmaDecodeProperties
|
||||||
#undef LzmaDecode
|
#undef LzmaDecode
|
||||||
@@ -70,10 +79,10 @@ typedef struct {
|
|||||||
CProb Probs[16382];
|
CProb Probs[16382];
|
||||||
#endif
|
#endif
|
||||||
} CLzmaDecoderState;
|
} CLzmaDecoderState;
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(CLzmaDecoderState) == 32768)
|
ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(CLzmaDecoderState) == 32768u)
|
||||||
ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(SizeT) >= 4)
|
ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(SizeT) >= 4)
|
||||||
|
|
||||||
#if (ACC_ARCH_I086) && (ACC_CC_WATCOMC)
|
#if (ACC_ARCH_I086)
|
||||||
# if (ACC_MM_HUGE)
|
# if (ACC_MM_HUGE)
|
||||||
typedef unsigned short __far MyCProb;
|
typedef unsigned short __far MyCProb;
|
||||||
# undef CProb
|
# undef CProb
|
||||||
@@ -84,7 +93,11 @@ ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(SizeT) >= 4)
|
|||||||
#else
|
#else
|
||||||
#define CLzmaDecoderState const CLzmaDecoderState
|
#define CLzmaDecoderState const CLzmaDecoderState
|
||||||
#endif
|
#endif
|
||||||
|
#if (ACC_CC_BORLANDC)
|
||||||
|
#include "LzmaDecode.c"
|
||||||
|
#else
|
||||||
#include "C/7zip/Compress/LZMA_C/LzmaDecode.c"
|
#include "C/7zip/Compress/LZMA_C/LzmaDecode.c"
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -63,9 +63,9 @@ Idx Name Size VMA LMA File off Algn Flags
|
|||||||
58 wcc_pia_286 0000000b 00000000 00000000 0000031d 2**0 CONTENTS, READONLY
|
58 wcc_pia_286 0000000b 00000000 00000000 0000031d 2**0 CONTENTS, READONLY
|
||||||
59 wcc_pis_086 0000000e 00000000 00000000 00000328 2**0 CONTENTS, READONLY
|
59 wcc_pis_086 0000000e 00000000 00000000 00000328 2**0 CONTENTS, READONLY
|
||||||
60 wcc_pis_286 0000000b 00000000 00000000 00000336 2**0 CONTENTS, READONLY
|
60 wcc_pis_286 0000000b 00000000 00000000 00000336 2**0 CONTENTS, READONLY
|
||||||
61 wcc_pts 00000001 00000000 00000000 00000341 2**0 CONTENTS, READONLY
|
61 wcc_pts 00000005 00000000 00000000 00000341 2**0 CONTENTS, READONLY
|
||||||
62 wcc_ptc 00000007 00000000 00000000 00000342 2**0 CONTENTS, READONLY
|
62 wcc_ptc 00000007 00000000 00000000 00000346 2**0 CONTENTS, READONLY
|
||||||
63 wcc_u4m 00000003 00000000 00000000 00000349 2**0 CONTENTS, READONLY
|
63 wcc_u4m 00000003 00000000 00000000 0000034d 2**0 CONTENTS, READONLY
|
||||||
SYMBOL TABLE:
|
SYMBOL TABLE:
|
||||||
00000000 l d DEVICEENTRY 00000000 DEVICEENTRY
|
00000000 l d DEVICEENTRY 00000000 DEVICEENTRY
|
||||||
00000000 l d EXEENTRY 00000000 EXEENTRY
|
00000000 l d EXEENTRY 00000000 EXEENTRY
|
||||||
|
|||||||
Reference in New Issue
Block a user