		   =======================================
		   FUJITSU FR-V LINUX KERNEL CONFIGURATION
		   =======================================

=====================
CONFIGURATION OPTIONS
=====================

The most important setting is in the "MMU support options" tab (the first
presented in the configuration tools available):

 (*) "Kernel Type"

     This options allows selection of normal, MMU-requiring linux, and uClinux
     (which doesn't require an MMU and doesn't have inter-process protection).

There are a number of settings in the "Processor type and features" section of
the kernel configuration that need to be considered.

 (*) "CPU"

     The register and instruction sets at the core of the processor. This can
     only be set to "FR40x/45x/55x" at the moment - but this permits usage of
     the kernel with MB93091 CB10, CB11, CB30, CB41, CB60, CB70 and CB451
     CPU boards, and with the MB93093 PDK board.

 (*) "System"

     This option allows a choice of basic system. This governs the peripherals
     that are expected to be available.

 (*) "Motherboard"

     This specifies the type of motherboard being used, and the peripherals
     upon it. Currently only "MB93090-MB00" can be set here.

 (*) "Default cache-write mode"

     This controls the initial data cache write management mode. By default
     Write-Through is selected, but Write-Back (Copy-Back) can also be
     selected. This can be changed dynamically once the kernel is running (see
     features.txt).

There are some architecture specific configuration options in the "General
Setup" section of the kernel configuration too:

 (*) "Reserve memory uncached for (PCI) DMA"

     This requests that a uClinux kernel set aside some memory in an uncached
     window for the use as consistent DMA memory (mainly for PCI). At least a
     megabyte will be allocated in this way, possibly more. Any memory so
     reserved will not be available for normal allocations.

 (*) "Kernel support for ELF-FDPIC binaries"

     This enables the binary-format driver for the new FDPIC ELF binaries that
     this platform normally uses. These binaries are totally relocatable -
     their separate sections can relocated independently, allowing them to be
     shared on uClinux where possible. This should normally be enabled.

 (*) "Kernel image protection"

     This makes the protection register governing access to the core kernel
     image prohibit access by userspace programs. This option is available on
     uClinux only.

There are also a number of settings in the "Kernel Hacking" section of the
kernel configuration especially for debugging a kernel on this
architecture. See the "gdbstub.txt" file for information about those.


======================
DEFAULT CONFIGURATIONS
======================

The kernel sources include a number of example default configurations:

 (*) defconfig-mb93091

     Default configuration for the MB93091-VDK with both CPU board and
     MB93090-MB00 motherboard running uClinux.


 (*) defconfig-mb93091-fb

     Default configuration for the MB93091-VDK with CPU board,
     MB93090-MB00 motherboard, and DAV board running uClinux.
     Includes framebuffer driver.


 (*) defconfig-mb93093

     Default configuration for the MB93093-PDK board running uClinux.


 (*) defconfig-cb70-standalone

     Default configuration for the MB93091-VDK with only CB70 CPU board
     running uClinux. This will use the CB70's DM9000 for network access.


 (*) defconfig-mmu

     Default configuration for the MB93091-VDK with both CB451 CPU board and
     MB93090-MB00 motherboard running MMU linux.

 (*) defconfig-mmu-audio

     Default configuration for the MB93091-VDK with CB451 CPU board, DAV
     board, and MB93090-MB00 motherboard running MMU linux. Includes
     audio driver.

 (*) defconfig-mmu-fb

     Default configuration for the MB93091-VDK with CB451 CPU board, DAV
     board, and MB93090-MB00 motherboard running MMU linux. Includes
     framebuffer driver.

 (*) defconfig-mmu-standalone

     Default configuration for the MB93091-VDK with only CB451 CPU board
     running MMU linux.



