====== FreeBSD/aarch64 in Gem5 simulator ======
The gem5 simulator is a modular platform for computer system architecture research, encompassing system-level architecture as well as processor microarchitecture.
===== Build instructions =====
=== 0. Preparation ===
$ export WORKDIR=~/gem5-test
$ mkdir $WORKDIR
$ cd $WORKDIR
$ git clone https://github.com/bukinr/aarch64-tools.git
$ git clone https://gem5.googlesource.com/public/gem5
$ svnlite co http://svn.freebsd.org/base/head
=== 1. Build Gem5 Simulator System ===
$ cd $WORKDIR/gem5
$ export SWIG=/usr/local/bin/swig2.0
$ export CXX=c++
# use -j as appropriate for your machine
$ scons -j 16 build/ARM/gem5.opt
$ gmake -C util/term
=== 2. Build FreeBSD ===
$ cd $WORKDIR/head
$ cat $WORKDIR/aarch64-tools/gem5/freebsd_gem5.patch | patch -p0
$ sh $WORKDIR/aarch64-tools/arm64_build.sh $WORKDIR/head
=== 3. Make symlinks ===
$ mkdir $WORKDIR/gem5/binaries $WORKDIR/gem5/disks
$ ln -s $WORKDIR/aarch64-tools/gem5/aarch64_gem5.dtb $WORKDIR/gem5/binaries/
$ ln -s $WORKDIR/aarch64-tools/gem5/boot_emm.arm64 $WORKDIR/gem5/binaries/
$ ln -s ~/arm64-workspace/obj/arm64.aarch64/usr/home/$USER/gem5-test/head/sys/GENERIC/kernel $WORKDIR/gem5/binaries/
$ ln -s ~/arm64-workspace/rootfs/disk.img $WORKDIR/gem5/disks/
===== Running in Full System mode =====
$ cd $WORKDIR/gem5
$ export M5_PATH=$WORKDIR/gem5
$ ./build/ARM/gem5.opt --debug-flags=-Exec configs/example/fs.py --kernel=kernel --machine-type=VExpress_EMM64 --dtb-file=aarch64_gem5.dtb --disk-image=disk.img --mem-size=256MB
$ (from another console) ./util/term/m5term 3456
===== Running in Syscall Emulation mode =====
$ cd $WORKDIR/gem5
$ export M5_PATH=$WORKDIR/gem5
$ ./build/ARM/gem5.opt --debug-flags=-Loader,-Exec,-Faults,-SyscallVerbose,-TLBVerbose configs/example/se.py -c your_app
===== Known problems =====
- Simulation speed is slow. It takes ~1 hour to boot freebsd in FS mode
- UART driver needs to be fixed
----
{{tag>Stale}}