Merge pull request #4 from knz/master

Merge the latest fixes.
Merge pull request #5 from knz/master

Merge the latest fixes.
Merge pull request #6 from knz/master

Latest batch of changes.
Merge pull request #7 from knz/master

Latest batch of changes.
Fix backward compatibility with '-s'.
Recognize configuration comments starting with ';' also at end of key/value pair.
Bug fix: ensure that overrides are considered in reverse order.
Fix support for bundle creations.

Prior to this patch, if the synchronous form is used (w/ an output
register in the parent thread), there will be *two* register
writebacks from the target place: one for allocation, and one
afterwards for creation.  This is a race condition which could entail
invalid register states in the parent. There should be only one
notification.

Moreover, since the parent thread may issue a sync right away, the
notification should only happen in the create phase, where the
family context is primed for a subsequent sync.
Let the SMC itself pull its ROM file name from argv[].
Allow indirect values in configuration keys.
Allow configuration word lists to contain indirect values.

This patch enables value lists of the following form in the
configuration:

   Key = val1, val2, $pat, val3
   pat = val4, ...

The lookup is made recursively. This is then used to support the extra
device names generated by '-L' on the command line.
Enable config keys with no value.

Previous to this patch the config file reader was able to associate a
multi-line value to a configuration key. This little-known feature had
never been used. This patch removes this feature (newline characters
terminate the value instead) and simultaneously enables keys that have
no value, eg:

   CmdLineLoads =   # left empty

causes key to have an empty value associated. This way we can create
lists where one of the elements merges to empty, eg:

   SMC:RegInits = a,b,c,$CmdLineLoads
   CmdLineLoads =

This way, if there is no override for CmdLineLoads, reading the value
for SMC:RegInits still works and does not gobble up the configuration
key on the line after CmdLineLoads.
Subsume the boot core register initialization under the configuration system.

Until this point the configuration of forced boot-time register
initializations used an ad-hoc mechanism with hooks throughout the
framework. This patch simplifies the logic by placing register
initalizations in the configuration namespace. The command-line
parameters -R/-L/-F are preserved by now add values to the new key
SMC:RegInits.  New value formats are recognized as well:

   -R10 0x1F # store the hexadecimal 1F (decimal 15) in integer
             # register 10.

   -R10 F3.14 # stores the IEEE754 representation of 3.14 in the
              # integer register 10.

   -F10 I0xF00F # store the binary representation of the integer hex
                # value F00F in FP register 10.

   -R10 BBootROM # store the base I/O address of the device
                 # named 'BootROM' as seen from the perspective
                 # of the boot core.

   -R10 $ArgvROM:ROMBaseAddr # store the value of configuration key
                             # 'ArgvROM:ROMBaseAddr'

The values are case-insensitive.
Enhance the handling of the 'objdump' utility.
Improve the configuration loader.

- use a LL1 recursive-descent parser.
- load file into string before starting to parse.
- recognize section headers as common prefix for following keys.

For example the following:

  [CPU*.ICache]
  :Associativity = 4
  :NumSets = 8

is equivalent to:

  CPU*.ICache:Associativity = 4
  CPU*.ICache:NumSets = 8

The special section name [global] resets the prefix.
Update the default config.ini to demonstrate use of configuration sections.
Enable reading from stdin if the configuration filename is '-'.
Enable reading overrides from files or stdin with command line argument -I.
Enable running the simulation even when objdump is not found.
Fix case of filename in header include.