Merge/Cleanup status

Eric W. Biederman ebiederman at lnxi.com
Sat Oct 30 03:16:00 CEST 2004


I have just committed another big bunch of code and I need to make
one more pass through the tree catch up other boards besides the
hdama to handle what I have introduced.  But things are cleaner more a
little smaller now, but with a little more functionality so I break
even on size.

- To reduce confuse rename the parts of linuxbios bios that run from
  ram linuxbios_ram instead of linuxbios_c and linuxbios_payload...
- Reordered the linker sections so the LinuxBIOS fallback image can take more the 64KiB on x86
- ROM_IMAGE_SIZE now will work when it is specified as larger than 64KiB.
- Tweaked the reset16.inc and reset16.lds to move the sanity check to see if everything will work.
- Start using romcc's built in preprocessor (This will simplify header compiler checks)
- Add helper functions for examining all of the resources
- Remove debug strings from chip.h
- Add llshell to src/arch/i386/llshell (Sometime later I can try it...)
- Add the ability to catch exceptions on x86
- Add gdb_stub support to x86
- Removed old cpu options
- Added an option so we can detect movnti support
- Remove some duplicate definitions from pci_ids.h
- Remove the 64bit resource code in amdk8/northbridge.c in preparation for making it generic
- Minor romcc bug fixes


ebiederman at lnxi.com (Eric W. Biederman) writes:

> So the things we can to do to keep size down.
> 1)  Use gcc-3.4 instead of gcc-3.3
      An updated size comparison for fallback gcc-3.3 vs gcc-3.4 on the arima
      hdama fallback image.

With gcc-3.3 I have:
----------------------------------------------------------------
$ size linuxbios_ram
   text	   data	    bss	    dec	    hex	filename
  40656	  39728	  58956	 139340	  2204c	linuxbios_ram

$ ls -l linuxbios_ram.nvr2b
-rw-r--r--  1 eric eric 28938 Oct 30 02:08 linuxbios_ram.nrv2b

$ ls -l linuxbios_ram.rom 
-rw-r--r--  1 eric eric 28938 Oct 30 02:08 linuxbios_ram.rom

$ size crt0.o
   text	   data	    bss	    dec	    hex	filename
  37033	      0	      0	  37033	   90a9	crt0.o

28938 + 37033 = 65971 or just over 65KiB

With gcc-3.4 I have:
-----------------------------------------------------------------
$ size linuxbios_ram

   text	   data	    bss	    dec	    hex	filename
  40448	  38268	  60652	 139368	  22068	linuxbios_ram

$ ls -l linuxbios_ram.nrv2b
-rw-r--r--  1 eric eric 28317 Oct 30 02:16 linuxbios_ram.nrv2b

$ ls -l linuxbios_ram.rom 
-rw-r--r--  1 eric eric 28317 Oct 30 02:16 linuxbios_ram.rom

$ size crt0.o
   text	   data	    bss	    dec	    hex	filename
  37033	      0	      0	  37033	   90a9	crt0.o

28317 + 37033 = 65350 or just under 65KiB

---------------------------------------------------------------------


So with this comparison I see the following.
28938 - 28317                     = 621 bytes or 2% more for gcc-3.3 in compressed size
(40656 + 39728) - (40448 + 38268) = 1668 bytes or 2% more for gcc-3.3 in uncompressed size

So switching to gcc-3.4 gives a 2% size reduction.  Not huge bug significant.


> 2) Kill unused strings.
     The member is removed from device.h and the dead strings just remain to
     be killed.
 
> 3) Expand the space available for linuxbios_c.gz
     Done.  linuxbios_ram can now occupy more space on x86.
> 
> 4) Better tune the current 64bit support for size.  I think the size
>    increase of the last few days has something to do with gcc's poor
>    handling of 64bit integers.  Perhaps linuxbios_c needs to go native
>    64bit on x86-64 capable machines.

     Some initial tuning has be done in particular some helper functions
     were introduced which noticeably bring the code size down.

> 5) Get non-inlining working usefully with romcc.
     Not really started but I have added functions:
     print_debug_hex8_(unsigned char value);
     print_debug_hex32_(unsigned int value);
     print_debug_(const char *str);

     Into arch/i386/lib/console.c so we can begin to experiment with
     this manually.  Once the manual case works it will be time to
     look at doing this automatically.

     In addition I modified the hdama build to let romcc preprocess
     the files itself without help from gcc.  Since that code works.
     (Well except for unsigned long constant expressions...)

> 6) cache-as-ram support (long term).
     Perhaps llshell.inc will make this easier to debug.
     I have added that into 
     src/arch/i386/llshell.inc for people to play with.

And the list of files I touched this round.

CVS: ----------------------------------------------------------------------
CVS: Enter Log.  Lines beginning with `CVS:' are removed automatically
CVS:
CVS: Committing in .
CVS:
CVS: Modified Files:
CVS:    src/arch/i386/boot/linuxbios_table.c
CVS:    src/arch/i386/init/ldscript.lb src/arch/i386/lib/Config.lb
CVS:    src/arch/i386/lib/c_start.S src/arch/ppc/init/ldscript.lb
CVS:    src/arch/ppc/lib/cpuid.c src/config/Config.lb
CVS:    src/config/Options.lb src/cpu/amd/model_fxx/Config.lb
CVS:    src/cpu/amd/mtrr/amd_mtrr.c src/cpu/amd/socket_940/Config.lb
CVS:    src/cpu/amd/socket_940/socket_940.c
CVS:    src/cpu/intel/model_f0x/Config.lb
CVS:    src/cpu/intel/model_f1x/Config.lb
CVS:    src/cpu/intel/model_f2x/Config.lb
CVS:    src/cpu/intel/model_f3x/Config.lb
CVS:    src/cpu/x86/16bit/entry16.inc src/cpu/x86/16bit/reset16.inc
CVS:    src/cpu/x86/16bit/reset16.lds src/cpu/x86/lapic/secondary.S
CVS:    src/cpu/x86/mtrr/earlymtrr.c src/cpu/x86/mtrr/mtrr.c
CVS:    src/devices/device.c src/devices/device_util.c
CVS:    src/devices/root_device.c src/include/delay.h
CVS:    src/include/device/device.h src/include/device/pci_ids.h
CVS:    src/include/device/resource.h
CVS:    src/mainboard/arima/hdama/Config.lb
CVS:    src/mainboard/arima/hdama/Options.lb
CVS:    src/mainboard/arima/hdama/mainboard.c
CVS:    src/northbridge/amd/amdk8/coherent_ht.c
CVS:    src/northbridge/amd/amdk8/northbridge.c src/ram/ramtest.c
CVS:    src/southbridge/amd/amd8111/amd8111.c
CVS:    src/superio/NSC/pc87360/superio.c
CVS:    targets/arima/hdama/Config.lb util/romcc/romcc.c
CVS: Added Files:
CVS:    src/arch/i386/llshell/llshell.inc
CVS:    src/arch/i386/llshell/readme.linuxbios
CVS:    src/config/linuxbios_ram.ld
CVS: Removed Files:
CVS:    src/config/linuxbios_c.ld
CVS: ----------------------------------------------------------------------



More information about the coreboot mailing list