protect 32-bits mode
diff --git a/programs/Makefile b/programs/Makefile
index de66b98..9d73cb9 100644
--- a/programs/Makefile
+++ b/programs/Makefile
@@ -43,8 +43,8 @@
 MANDIR  = $(PREFIX)/share/man/man1
 ZSTDDIR = ../lib
 
-ZSTD_FILES  = $(ZSTDDIR)/zstd_compress.c $(ZSTDDIR)/zstd_decompress.c $(ZSTDDIR)/fse.c $(ZSTDDIR)/huff0.c
-ZSTD_LEGACY = $(ZSTDDIR)/legacy/zstd_v01.c $(ZSTDDIR)/legacy/zstd_v02.c $(ZSTDDIR)/legacy/zstd_v03.c
+ZSTD_FILES := $(ZSTDDIR)/zstd_compress.c $(ZSTDDIR)/zstd_decompress.c $(ZSTDDIR)/fse.c $(ZSTDDIR)/huff0.c
+ZSTD_LEGACY:= $(ZSTDDIR)/legacy/zstd_v01.c $(ZSTDDIR)/legacy/zstd_v02.c $(ZSTDDIR)/legacy/zstd_v03.c
 
 ifeq ($(ZSTD_LEGACY),disable)
 CPPFLAGS  += -DZSTD_LEGACY_SUPPORT=0
@@ -151,83 +151,84 @@
 
 test-all: test test32 valgrindTest
 
-test-zstd: zstd datagen
+zstd-playTests: datagen
 	@echo "\n**** frame concatenation **** "
 	@echo "hello " > hello.tmp
 	@echo "world!" > world.tmp
 	@cat hello.tmp world.tmp > helloworld.tmp
-	./zstd hello.tmp > hello.zstd
-	./zstd world.tmp > world.zstd
+	$(ZSTD) hello.tmp > hello.zstd
+	$(ZSTD) world.tmp > world.zstd
 	@cat hello.zstd world.zstd > helloworld.zstd
-	./zstd -d helloworld.zstd > result.tmp
+	$(ZSTD) -df helloworld.zstd > result.tmp
 	cat result.tmp
 	sdiff helloworld.tmp result.tmp
 	@rm *.tmp *.zstd
 	@echo frame concatenation test completed
 	@echo "**** flush write error test **** "
-	echo foo | ./zstd > /dev/full; if [ $$? -eq 0 ] ; then echo "write error not detected!"; false; fi
-	echo foo | ./zstd | ./zstd -d > /dev/full; if [ $$? -eq 0 ] ; then echo "write error not detected!"; false; fi
+	echo foo | $(ZSTD) > /dev/full; if [ $$? -eq 0 ] ; then echo "write error not detected!"; false; fi
+	echo foo | $(ZSTD) | $(ZSTD) -d > /dev/full; if [ $$? -eq 0 ] ; then echo "write error not detected!"; false; fi
 	@echo "**** zstd round-trip tests **** "
 	@./datagen             | md5sum > tmp1
-	./datagen              | ./zstd -v    | ./zstd -d  | md5sum > tmp2
+	./datagen              | $(ZSTD) -v    | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
-	./datagen              | ./zstd -6 -v | ./zstd -d  | md5sum > tmp2
+	./datagen              | $(ZSTD) -6 -v | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
 	@./datagen -g270000000 | md5sum > tmp1
-	./datagen -g270000000  | ./zstd -v    | ./zstd -d  | md5sum > tmp2
+	./datagen -g270000000  | $(ZSTD) -v    | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
-	./datagen -g270000000  | ./zstd -v2   | ./zstd -d  | md5sum > tmp2
+	./datagen -g270000000  | $(ZSTD) -v2   | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
-	./datagen -g270000000  | ./zstd -v3   | ./zstd -d  | md5sum > tmp2
+	./datagen -g270000000  | $(ZSTD) -v3   | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
 	@./datagen -g140000000 -P60| md5sum > tmp1
-	./datagen -g140000000 -P60 | ./zstd -v4   | ./zstd -d  | md5sum > tmp2
+	./datagen -g140000000 -P60 | $(ZSTD) -v4   | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
-	./datagen -g140000000 -P60 | ./zstd -v5   | ./zstd -d  | md5sum > tmp2
+	./datagen -g140000000 -P60 | $(ZSTD) -v5   | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
-	./datagen -g140000000 -P60 | ./zstd -v6   | ./zstd -d  | md5sum > tmp2
+	./datagen -g140000000 -P60 | $(ZSTD) -v6   | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
 	@./datagen -g70000000 -P70 | md5sum > tmp1
-	./datagen -g70000000 -P70  | ./zstd -v7   | ./zstd -d  | md5sum > tmp2
+	./datagen -g70000000 -P70  | $(ZSTD) -v7   | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
-	./datagen -g70000000 -P70  | ./zstd -v8   | ./zstd -d  | md5sum > tmp2
+	./datagen -g70000000 -P70  | $(ZSTD) -v8   | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
-	./datagen -g70000000 -P70  | ./zstd -v9   | ./zstd -d  | md5sum > tmp2
+	./datagen -g70000000 -P70  | $(ZSTD) -v9   | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
 	@./datagen -g35000000 -P75 | md5sum > tmp1
-	./datagen -g35000000 -P75  | ./zstd -v10  | ./zstd -d  | md5sum > tmp2
+	./datagen -g35000000 -P75  | $(ZSTD) -v10  | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
-	./datagen -g35000000 -P75  | ./zstd -v11  | ./zstd -d  | md5sum > tmp2
+	./datagen -g35000000 -P75  | $(ZSTD) -v11  | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
-	./datagen -g35000000 -P75  | ./zstd -v12  | ./zstd -d  | md5sum > tmp2
+	./datagen -g35000000 -P75  | $(ZSTD) -v12  | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
 	@./datagen -g18000000 -P80 | md5sum > tmp1
-	./datagen -g18000000 -P80  | ./zstd -v13  | ./zstd -d  | md5sum > tmp2
+	./datagen -g18000000 -P80  | $(ZSTD) -v13  | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
-	./datagen -g18000000 -P80  | ./zstd -v14  | ./zstd -d  | md5sum > tmp2
+	./datagen -g18000000 -P80  | $(ZSTD) -v14  | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
-	./datagen -g18000000 -P80  | ./zstd -v15  | ./zstd -d  | md5sum > tmp2
+	./datagen -g18000000 -P80  | $(ZSTD) -v15  | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
-	./datagen -g18000000 -P80  | ./zstd -v16  | ./zstd -d  | md5sum > tmp2
+	./datagen -g18000000 -P80  | $(ZSTD) -v16  | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
-	./datagen -g18000000 -P80  | ./zstd -v17  | ./zstd -d  | md5sum > tmp2
+	./datagen -g18000000 -P80  | $(ZSTD) -v17  | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
 	@./datagen -g50000000 -P94 | md5sum > tmp1
-	./datagen -g50000000 -P94  | ./zstd -v18  | ./zstd -d  | md5sum > tmp2
+	./datagen -g50000000 -P94  | $(ZSTD) -v18  | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
-	./datagen -g50000000 -P94  | ./zstd -v19  | ./zstd -d  | md5sum > tmp2
+	./datagen -g50000000 -P94  | $(ZSTD) -v19  | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
 	@./datagen -g99000000 -P99 | md5sum > tmp1
-	./datagen -g99000000 -P99  | ./zstd -v20  | ./zstd -d  | md5sum > tmp2
+	./datagen -g99000000 -P99  | $(ZSTD) -v20  | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
 	./datagen -g6000000000 -P99| md5sum > tmp1
-	./datagen -g6000000000 -P99| ./zstd -vq   | ./zstd -d  | md5sum > tmp2
+	./datagen -g6000000000 -P99| $(ZSTD) -vq   | $(ZSTD) -d  | md5sum > tmp2
 	@diff tmp1 tmp2   
 
-test-zstd32: zstd32 datagen
-	./datagen            | ./zstd32 -v  | ./zstd32 -d > $(VOID)
-	./datagen -g256MB    | ./zstd32 -v  | ./zstd32 -d > $(VOID)
-	./datagen -g6GB -P99 | ./zstd32 -vq | ./zstd32 -d > $(VOID)
+test-zstd: ZSTD = ./zstd
+test-zstd: zstd zstd-playTests
+
+test-zstd32: ZSTD = ./zstd32
+test-zstd32: zstd32 zstd-playTests
 
 test-fullbench: fullbench datagen
 	./fullbench -i1