55c55,72
< def config_filesystem(options):
---
> def config_filesystem(system, options = None):
> """ This function parses the system object to create the pseudo file system
> @param system: The system to create the config for
> @param options: An optional argument which contains an Options.py options
> object. This is useful if when use se.py and will set the L2 cache
> size and the clock in /proc/cpuinfo if provided.
>
> First, this function walks the system object to find all CPUs.
> Then, this function creates the following files with the CPU information
> - /proc/cpuinfo which contains the clock and the L2 size
> (assumes all L2s private and the same size)
> - /proc/stat simply lists all CPUs
> - /sys/devices/system/cpu/online and /sys/devices/system/cpu/possible
> These files list all of the CPUs in this system.
> - /tmp
>
> These files are created in the `fs` directory in the outdir path.
> """
63c80,82
< cpu_clock = '0'
---
> cpus = [obj for obj in system.descendants() if isinstance(obj, BaseCPU)]
>
> cpu_clock = 0
65,66c84
< cpu_clock = options.cpu_clock
< cpu_clock = toFrequency(cpu_clock)/mega
---
> cpu_clock = toFrequency(options.cpu_clock) / mega
68c86
< l2_size = '0'
---
> l2_size = 0
70,71c88
< l2_size = options.l2_size
< l2_size = toMemorySize(l2_size)/kibi
---
> l2_size = toMemorySize(options.l2_size) / kibi
73,78c90,91
< cacheline_size = '0'
< if hasattr(options, 'cacheline_size'):
< cacheline_size = options.cacheline_size
<
< for i in xrange(options.num_cpus):
< one_cpu = 'processor : %d\n' % (i) + \
---
> for i,cpu in enumerate(cpus):
> one_cpu = 'processor : {proc}\n' + \
84,87c97,98
< 'cpu MHz : %0.3d\n' \
< % cpu_clock + \
< 'cache size: : %dK\n' \
< % l2_size + \
---
> 'cpu MHz : {clock:0.3f}\n' + \
> 'cache size: : {l2_size}K\n' + \
89,94c100,102
< 'siblings : %s\n' \
< % options.num_cpus + \
< 'core id : %d\n' \
< % i + \
< 'cpu cores : %d\n' \
< % options.num_cpus + \
---
> 'siblings : {num_cpus}\n' + \
> 'core id : {proc}\n' + \
> 'cpu cores : {num_cpus}\n' + \
100,101c108
< 'cache alignment : %d\n' \
< % cacheline_size + \
---
> 'cache alignment : {cacheline_size}\n' + \
102a110,116
> one_cpu = one_cpu.format(proc = i, num_cpus = len(cpus),
> # Note: it would be nice to use cpu.clock, but it hasn't
> # been finalized yet since m5.instantiate() isn't done.
> clock = cpu_clock,
> # Note: this assumes the L2 is private to each core
> l2_size = l2_size,
> cacheline_size=system.cache_line_size.getValue())
106c120
< for i in xrange(options.num_cpus):
---
> for i in xrange(len(cpus)):
117,118c131,132
< file_append((cpudir, 'online'), '0-%d' % (options.num_cpus-1))
< file_append((cpudir, 'possible'), '0-%d' % (options.num_cpus-1))
---
> file_append((cpudir, 'online'), '0-%d' % (len(cpus) - 1))
> file_append((cpudir, 'possible'), '0-%d' % (len(cpus) - 1))
123a138,143
> if options and hasattr(options, 'chroot'):
> chroot = os.path.expanduser(options.chroot)
> else:
> chroot = '/'
> system.redirect_paths = _redirect_paths(chroot)
>
179c199
< def redirect_paths(chroot):
---
> def _redirect_paths(chroot):