TSAR BOOT LOADER

Files:
===============================================================================
src/        Source files
            The entry point of this boot loader is the file reset.S

include/    Header files

conf/       Platform specific files and ldscript examples.
            For each platform, we must define a new directory.

            - defs_platform.h:

              This file is mandatory. This file defines the NB_PROCS per
              cluster, the NB_CLUSTERS and the base address of the TTY, IOC,
              XICU and MEMC (config) devices. It defines also:

                #define USE_IOB

                  This constant is used by the boot_ioc_read function to know
                  if the buffer used to store the blocks from the block_device
                  must be invalidated in the memory cache after the transfert
                  has finished.

                #define CACHE_COHERENCE

                  This constant is used by the boot_ioc_read function to know
                  if the buffer used to store the blocks from the block_device
                  must be invalidated in the dcache after the transfert has
                  finished.

                #define CACHE_LINE_SIZE
                  
                  This constant is mandatory if CACHE_COHERENCE=0 or USE_IOB=1
                  This constant defines the size in bytes of a cache line.

                #define RESET_DEBUG

                  Set value to 1 to show some debug messages during loading 

                #define IRQ_PER_PROC

                  This constant is used to know how many XICU irq outputs are
                  connected to each processor.

            - platform_soclib.dts:

              Device tree file. It is mandatory if compiling for a SOCLIB
              platform and USE_DT=1.

            - platform_fpga.dts:

              Device tree file. It is mandatory if compiling for a FPGA
              platform and USE_DT=1.

            - ldscript:

              LD script defining the segments of this boot loader.
              We define two segments:

                seg_stack_base:

                  Base address of the stack used by processor 0 during the boot
                  process. read-write data and bss will also be there.

                seg_boot_base:
                
                  Base address of the code and read-only data defined for this
                  loader
            
Makefile    Makefile to compile the boot loader. Arguments to pass:

              PLATFORM_DIR=<platform_dir>
    
                Defines the directory where to find the plateform specific
                files

              SOCLIB=1

                If using SOCLIB, define this flag to use the BLOCK DEVICE
                driver and to choose the platform_soclib device tree.

              RAMDISK=1

                If using SOCLIB, define this flag to use a RAMDISK instead of
                BLOCK DEVICE (Set this flag when the SOCLIB flag is also set)

              USE_DT=0

                If a device tree file is not used, set this flag to 0. It is
                set by default to 1.

              e.g. make PLATFORM_DIR=<platform_conf> \
                        SOCLIB=1 \
                        USE_DT=0 \
                        RAMDISK=0
