sparc,configs: Initialize ROMs directly, not with the workload.
authorGabe Black <gabeblack@google.com>
Sun, 29 Mar 2020 10:30:05 +0000 (03:30 -0700)
committerGabe Black <gabeblack@google.com>
Thu, 16 Apr 2020 23:43:37 +0000 (23:43 +0000)
commitc9cf3077e28d358eb95928ee228caea511b012eb
treefeb81545c3dedf7d2bd537e30b2fe123cd46a93b
parent0172089203592037f99fc89126285896c73e6a60
sparc,configs: Initialize ROMs directly, not with the workload.

This simplifies the SPARC FS workload significantly, and removes
assumptions about what ROMs exist, where they go, etc. It removes
other components from the loop which don't have anything to contribute
as far as setting up the ROMs.

One side effect of this is that there isn't specialized support for
adding PC based events which would fire in the ROMs, but that was never
done and the files that were being used were flat binary blobs with no
symbols in the first place.

This also necessitates building a unified image which goes into the single
8MB ROM that is located at address 0xfff0000000. That is simply done
with the following commands:

dd if=/dev/zero of=t1000_rom.bin bs=1024 count=8192
dd if=reset_new.bin of=t1000_rom.bin
dd if=q_new.bin of=t1000_rom.bin bs=1024 seek=64
dd if=openboot_new.bin of=t1000_rom.bin bs=1024 seek=512

This results in an 8MB blob which can be loaded verbatim into the ROM.
Alternatively, and with some extra effort, an ELF file could be
constructed which had each of these components as segments, offset to the
right location in the ELF header. That would be slightly more work to set up,
but wouldn't waste space on regions of the image that are all zeroes.

Change-Id: Id4e08f4e047e7bd36a416c197a36be841eba4a15
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/27268
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: Gem5 Cloud Project GCB service account <345032938727@cloudbuild.gserviceaccount.com>
configs/common/FSConfig.py
src/arch/sparc/SparcFsWorkload.py
src/arch/sparc/fs_workload.cc
src/arch/sparc/fs_workload.hh