LIST OF FILES

README
	This document

mbemu.cc
	The emulator program showcased on YouTube. Compiles on DJGPP.

mbemu-full.zip
	Contains a version of the emulator that compiles on Linux
	and that contains debugging.

mbemu-dos-binary.7z
	Contains DJGPP-precompiled version of the DOS program, mbemu.

simpleImage.7z
	Contains simpleImage.emu.ub ...
	The Linux kernel used in this demonstration, with U-Boot header.
	Contains precompiled kernel, precompiled initramfs (as above).

rootfs2.7z
	Contains rootfs2.cpio.lzo ...
	The initramfs used for the root filesystem in the Linux system.
	Contains precompiled busybox. Compressed using LZOP.
	Extract it as follows (as root, because it creates device nodes):
		mkdir image
		cd image
		lzop -d < ../rootfs2.cpio.lzo | cpio -i
	Recreate as follows (does not need to be done as root):
		cd image
		find . | cpio --quiet -H newc -o | lzop -9 > ../rootfs2.cpio.lzo
	Contents:
		bin/busybox
			Modified Busybox 1.19.0 binary
		init, bin/*, sbin/*
			Busybox symlinks
		root/.*sh_history
			Fabricated shell history files.
		etc/*, etc/init.d/rcS
			Configuration and other files.

patch-linux-3.0.4.txt
	The patch to Linux kernel version 3.0.4.
	Summary of changes: 
		- Add configuration ( .config, arch/microblaze/boot/dts/emu.dts )
		- Fix compilation preventing problem in
		  arch/microblaze/include/asm/futex.h
		- Detect Microblaze 8.20.a
		- Fix compilation preventing problem in
		  arch/microblaze/kernel/head.S ("lwr" not understood by binutils)
		- Add some debugging here and there

patch-busybox-1.19.0.txt
	The patch to Busybox 1.19.0.
	Summary of changes:
		- Add configuration
		- Disable usleep/sleep where not necessary
		- Add a workaround in findutils/find.c (for some reason, the argv
		  loop gets miscompiled otherwise, and ends up in an infinite loop).
		- Add explicit linkage against nss_files, nss_dns and resolv
		  (somehow they ended up being required).

patch-glibc-d05156fff63ddfec09bf6a74fe53deb37731e3ba.txt
	The patch to Xilinx's GLIBC.
	Summary of changes:
		- Fix fcntl.h to match what is actually used by the kernel.

linux-.config
	The configuration used for Linux kernel. (Also included in patch-linux-3.0.4.txt)

Configure used for binutils 2.21.1:
	../binutils-2.21.1/configure --target=microblaze-xilinx-elf
	make ; make install
	Note: Installs to /usr/local/microblaze-xilinx-elf and /usr/local/bin !

Configure used for gcc-4.6.1:
	../gcc-4.6.1/configure --target=microblaze-xilinx-elf
	make all-gcc ; make install-all-gcc
	Note: Installs to /usr/local/microblaze-xilinx-elf and /usr/local/bin !

Configure used for glibc:
	P=..../microblaze-unknown-linux-gnu  (where mb_gnu_tools_bin.tar.bz was extracted)
	export PATH=$P/bin:$PATH
	export CROSS_COMPILE=microblaze-unknown-linux-gnu-
	../glibc/configure \
		--build=x86_64-linux-gnu \
		--host=microblaze-unknown-linux-gnu \
		--target=microblaze-unknown-linux-gnu \
		--enable-add-ons=linuxthreads --with-elf \
		--enable-multilib --with-sysroot=/ \
		--disable-shared \
		CFLAGS="-D__bluecat__ -O2 -mxl-multiply-high -mno-xl-soft-mul -mcpu=v8.10.a" \
		--prefix=/microblaze-unknown-linux-gnu/sys-root/usr --enable-static-nss
	make
	make install install_root=$P

Compiled Linux kernel as such:
	WITHOUT the $P path
	export CROSS_COMPILE=microblaze-xilinx-elf-
	make ARCH=microblaze simpleImage.emu

Compiled Busybox as such:
	WITH the $P path
	make ARCH=microblaze menuconfig
	make ARCH=microblaze
	Copied busybox to the initramfs image.

Linux kernel headers also installed from Linux-3.0.4 under
the microblaze-unkown-linux-gnu root, but I do not remember
the exact procedure by which I did it.


lossless_encode.mkv
	Lossless encode (ZMBV) of the published video (283 MB, 4620x2400 resolution @ 30fps)
hq_encode.mkv
	High quality encode (ZMBV) of the published video (88 MB, 1280x720 resolution @ 30fps)
mq_encode.mkv
	Medium quality encode (ZMBV) of the published video (45 MB, 852x480 resolution @ 30fps)
