		Basic Firmware on Realview-EB-MPCore Guest

The basic firmware currently sets up PIC, Timer, and UART and emulates
a dummy terminal which reponds to various commands. It also includes an
extensive MMU test suite and dhrystone benchmark.

Hardware features tested by Basic Firmware:
  - Sensitive non-priviledged instructions
  - Virtual IRQs
  - Generic Interrupt Controller (GIC)
  - PrimeCell Dual-Mode Timer (SP804)
  - Serial Port (PL011)  

Please follow the steps below to build & run Basic Firmware on 
Realview-EB-MPCore Guest with Xvisor running on QEMU Realview-EB-MPCore Host:

  [1. Build environment for Xvisor]
  # export CROSS_COMPILE=arm-linux-gnueabi-

  [2. GoTo Xvisor source directory]
  # cd <xvisor_source_directory>

  [3. Initialize Xvisor submodules]
  # git submodule init
  # git submodule update
  (Note: This is required to be done only once in freshly cloned xvisor source)

  [4. Configure Xvisor with Generic v6 default settings]
  # make ARCH=arm generic-v6-defconfig

  [5. Build Xvisor & DTBs]
  # make

  [6. Build Basic Firmware]
  # make -C tests/arm32/realview-eb-mpcore/basic

  [7. Create disk image for Xvisor]
  # mkdir -p ./build/disk/tmp
  # mkdir -p ./build/disk/system
  # cp -f ./docs/banner/roman.txt ./build/disk/system/banner.txt
  # cp -f ./docs/logo/xvisor_logo_name.ppm ./build/disk/system/logo.ppm
  # mkdir -p ./build/disk/images/arm32/realview-eb-mpcore
  # ./build/tools/dtc/bin/dtc -I dts -O dtb -o ./build/disk/images/arm32/realview-eb-mpcore.dtb ./tests/arm32/realview-eb-mpcore/realview-eb-mpcore.dts
  # cp -f ./build/tests/arm32/realview-eb-mpcore/basic/firmware.bin.patched ./build/disk/images/arm32/realview-eb-mpcore/firmware.bin
  # cp -f ./tests/arm32/realview-eb-mpcore/basic/nor_flash.list ./build/disk/images/arm32/realview-eb-mpcore/nor_flash.list
  # cp -f ./tests/arm32/realview-eb-mpcore/xscript/one_guest_ebmp.xscript ./build/disk/boot.xscript
  # genext2fs -B 1024 -b 32768 -d ./build/disk ./build/disk.img

  [8. Launch QEMU]
  # qemu-system-arm -M realview-eb-mpcore -m 512M -display none -serial stdio -kernel build/vmm.bin -dtb build/arch/arm/board/generic/dts/arm/arm-realview-eb-11mp-ctrevb.dtb -initrd build/disk.img

  [9. Kick Guest0 for starting Basic Firmware]
  XVisor# guest kick guest0

  [10. Bind to virtual UART]
  XVisor# vserial bind guest0/uart0

  [11. Say 'hi' to Basic Firmware]
  [guest0/uart0] basic# hi

  [12. Say 'hello' to Basic Firmware]
  [guest0/uart0] basic# hello

  [13. Check various commands of Basic Firmware]
  [guest0/uart0] basic# help

  [14. Enter character seqence 'ESCAPE+x+q" return to Xvisor prompt]
  [guest0/uart0] basic# 

  (Note: replace all <> brackets based on your workspace)
  (Note: some of the above steps will need to be adapted for other
   types of ARM host)
  (Note: for more info on your desired ARM host refer docs/arm/)
  (Note: you are free to change the ordering of above steps based
   on your workspace)
