
mainmenu_option next_comment
bool 'Enable LEON3 SPARC V8 Processor' CONFIG_LEON3
if [ "$CONFIG_LEON3" = "y" ]; then
  int 'Number of processors' CONFIG_PROC_NUM 1
  comment 'Processor            '
  mainmenu_option next_comment
    comment 'Integer unit                                           '
    int 'SPARC register windows' CONFIG_IU_NWINDOWS 8
    bool 'SPARC V8 MUL/DIV instructions' CONFIG_IU_V8MULDIV
    if [ "$CONFIG_IU_V8MULDIV" = "y" ]; then
      choice 'Hardware multiplier latency' \
	"2-cycles		CONFIG_IU_MUL_LATENCY_2 \
	4-cycles		CONFIG_IU_MUL_LATENCY_4 \
	5-cycles		CONFIG_IU_MUL_LATENCY_5" 5-cycles
      if [ "$CONFIG_IU_MUL_LATENCY_4" = "y" -o "$CONFIG_IU_MUL_LATENCY_5" = "y" ]; then
        bool 'SPARC V8e SMAC/UMAC instructions     ' CONFIG_IU_MUL_MAC
      fi
    fi
    bool 'Branch prediction     ' CONFIG_IU_BP
    bool 'Single-vector trapping' CONFIG_IU_SVT
    int 'Load delay' CONFIG_IU_LDELAY 1
    int 'Hardware watchpoints' CONFIG_IU_WATCHPOINTS 0
    bool 'Enable power-down mode ' CONFIG_PWD
    hex ' Reset start address (addr[31:12]) ' CONFIG_IU_RSTADDR 00000
  endmenu
  mainmenu_option next_comment
  comment 'Floating-point unit'
    bool 'Enable FPU                             ' CONFIG_FPU_ENABLE
    if [ "$CONFIG_FPU_ENABLE" = "y" ]; then
      choice 'FPU core' \
	"GRFPU		CONFIG_FPU_GRFPU \
	 GRFPU-LITE	CONFIG_FPU_GRFPULITE \
	Meiko		CONFIG_FPU_MEIKO" GRFPU
      if [ "$CONFIG_FPU_GRFPU" = "y" ]; then
  	   choice 'GRFPU multiplier' \
   	 "Inferred              CONFIG_FPU_GRFPU_INFMUL \
   	  DW                    CONFIG_FPU_GRFPU_DWMUL \
   	  ModGen                CONFIG_FPU_GRFPU_MODGEN \
   	  TechSpec              CONFIG_FPU_GRFPU_TECHSPEC" Inferred
      fi
      if [ "$CONFIG_HAS_SHARED_GRFPU" = "y" ]; then
	bool 'Shared GRFPU                      ' CONFIG_FPU_GRFPU_SH
      fi
      if [ "$CONFIG_FPU_GRFPULITE" = "y" ]; then
	choice 'GRFPU-LITE controller' \
	 "Simple                CONFIG_FPU_GRFPC0 \
	  Data-forwarding       CONFIG_FPU_GRFPC1 \
	  Non-blocking          CONFIG_FPU_GRFPC2" Simple
      fi
      bool 'Use VHDL netlist          ' CONFIG_FPU_NETLIST
    fi
  endmenu
  mainmenu_option next_comment
  comment 'Cache system'
    bool 'Enable instruction cache       ' CONFIG_ICACHE_ENABLE
    if [ "$CONFIG_ICACHE_ENABLE" = "y" ]; then
      choice 'Associativity (sets)            ' \
	"1		CONFIG_ICACHE_ASSO1 \
	2		CONFIG_ICACHE_ASSO2 \
	3		CONFIG_ICACHE_ASSO3 \
	4		CONFIG_ICACHE_ASSO4" 1
      choice 'Set size (kbytes/set)' \
	"1		CONFIG_ICACHE_SZ1 \
	2		CONFIG_ICACHE_SZ2 \
	4		CONFIG_ICACHE_SZ4 \
	8		CONFIG_ICACHE_SZ8 \
	16		CONFIG_ICACHE_SZ16 \
	32		CONFIG_ICACHE_SZ32 \
	64		CONFIG_ICACHE_SZ64 \
	128		CONFIG_ICACHE_SZ128 \
	256		CONFIG_ICACHE_SZ256" 4
      choice 'Line size (bytes/line)' \
	"16		CONFIG_ICACHE_LZ16 \
	32		CONFIG_ICACHE_LZ32" 32
      if [ "$CONFIG_ICACHE_ASSO1" != "y" ]; then
        choice 'Replacement alorithm' \
	"Random		CONFIG_ICACHE_ALGORND \
	LRR		CONFIG_ICACHE_ALGOLRR \
	LRU		CONFIG_ICACHE_ALGOLRU" Random
        bool 'Cache locking      ' CONFIG_ICACHE_LOCK
      fi
    fi
    if [ "$CONFIG_MMU_ENABLE" != "y" ]; then
      bool 'Enable local instruction RAM            ' CONFIG_ICACHE_LRAM
    fi
    if [ "$CONFIG_ICACHE_LRAM" = "y" ]; then
        choice 'Local data RAM size (kbytes)' \
	"1		CONFIG_ICACHE_LRAM_SZ1 \
	2		CONFIG_ICACHE_LRAM_SZ2 \
	4		CONFIG_ICACHE_LRAM_SZ4 \
	8		CONFIG_ICACHE_LRAM_SZ8 \
	16		CONFIG_ICACHE_LRAM_SZ16 \
	32		CONFIG_ICACHE_LRAM_SZ32 \
	64		CONFIG_ICACHE_LRAM_SZ64 \
	128		CONFIG_ICACHE_LRAM_SZ128 \
	256		CONFIG_ICACHE_LRAM_SZ256" 4
        hex ' Local instruction RAM start address (8 MSB) ' CONFIG_ICACHE_LRSTART 8e
    fi
    bool 'Enable data cache       ' CONFIG_DCACHE_ENABLE
    if [ "$CONFIG_DCACHE_ENABLE" = "y" ]; then
      choice 'Associativity (sets)' \
	"1		CONFIG_DCACHE_ASSO1 \
	2		CONFIG_DCACHE_ASSO2 \
	3		CONFIG_DCACHE_ASSO3 \
	4		CONFIG_DCACHE_ASSO4" 1
      choice 'Set size (kbytes/set)' \
	"1		CONFIG_DCACHE_SZ1 \
	2		CONFIG_DCACHE_SZ2 \
	4		CONFIG_DCACHE_SZ4 \
	8		CONFIG_DCACHE_SZ8 \
	16		CONFIG_DCACHE_SZ16 \
	32		CONFIG_DCACHE_SZ32 \
	64		CONFIG_DCACHE_SZ64 \
	128		CONFIG_DCACHE_SZ128 \
	256		CONFIG_DCACHE_SZ256" 4
      choice 'Line size (bytes/line)' \
	"16		CONFIG_DCACHE_LZ16 \
	32		CONFIG_DCACHE_LZ32" 32
      if [ "$CONFIG_DCACHE_ASSO1" != "y" ]; then
        choice 'Replacement alorithm' \
	"Random		CONFIG_DCACHE_ALGORND \
	LRR		CONFIG_DCACHE_ALGOLRR \
	LRU		CONFIG_DCACHE_ALGOLRU" Random
        bool 'Cache locking      ' CONFIG_DCACHE_LOCK
      fi
      bool 'AHB snooping       ' CONFIG_DCACHE_SNOOP
      if [ "$CONFIG_DCACHE_SNOOP" = "y" ]; then
          bool 'Fast snooping       ' CONFIG_DCACHE_SNOOP_FAST
      fi
      if [ "$CONFIG_DCACHE_SNOOP" = "y" ]; then
          bool 'Separate snoop tags  ' CONFIG_DCACHE_SNOOP_SEPTAG
      fi
    fi
    if [ "$CONFIG_ICACHE_ENABLE" = "y" -o "$CONFIG_DCACHE_ENABLE" = "y" ]; then
      hex 'Fixed cacheability map  ' CONFIG_CACHE_FIXED 0
    fi
    if [ "$CONFIG_MMU_ENABLE" != "y" ]; then
      bool 'Enable local data RAM            ' CONFIG_DCACHE_LRAM
    fi
    if [ "$CONFIG_DCACHE_LRAM" = "y" ]; then
        choice 'Local data RAM size (kbytes)' \
	"1		CONFIG_DCACHE_LRAM_SZ1 \
	2		CONFIG_DCACHE_LRAM_SZ2 \
	4		CONFIG_DCACHE_LRAM_SZ4 \
	8		CONFIG_DCACHE_LRAM_SZ8 \
	16		CONFIG_DCACHE_LRAM_SZ16 \
	32		CONFIG_DCACHE_LRAM_SZ32 \
	64		CONFIG_DCACHE_LRAM_SZ64 \
	128		CONFIG_DCACHE_LRAM_SZ128 \
	256		CONFIG_DCACHE_LRAM_SZ256" 4
        hex ' Local data RAM start address (8 MSB) ' CONFIG_DCACHE_LRSTART 8f
    fi
  endmenu

  mainmenu_option next_comment
  comment 'MMU'
  bool 'Enable MMU       ' CONFIG_MMU_ENABLE
  if [ "$CONFIG_MMU_ENABLE" = "y" ]; then
    choice 'MMU type              ' \
	"combined	CONFIG_MMU_COMBINED \
	 split		CONFIG_MMU_SPLIT" combined
    choice 'TLB replacement sheme              ' \
	"LRU      	CONFIG_MMU_REPARRAY \
	 Increment	CONFIG_MMU_REPINCREMENT" Increment
       choice 'Instruction (or combined) TLB entries' \
	"2		CONFIG_MMU_I2 \
	4		CONFIG_MMU_I4 \
	8		CONFIG_MMU_I8 \
	16		CONFIG_MMU_I16 \
	32		CONFIG_MMU_I32" 8
    if [ "$CONFIG_MMU_SPLIT" = "y" ]; then
       choice 'Data TLB entries' \
	"2		CONFIG_MMU_D2 \
	4		CONFIG_MMU_D4 \
	8		CONFIG_MMU_D8 \
	16		CONFIG_MMU_D16 \
	32		CONFIG_MMU_D32" 8
	bool 'Fast writebuffer       ' CONFIG_MMU_FASTWB
    fi
    choice 'MMU page size' \
	"4K		CONFIG_MMU_PAGE_4K \
	8K		CONFIG_MMU_PAGE_8K \
	16K		CONFIG_MMU_PAGE_16K \
	32K		CONFIG_MMU_PAGE_32K \
	Programmable	CONFIG_MMU_PAGE_PROG" 4K
  fi
  endmenu

  mainmenu_option next_comment
    comment 'Debug Support Unit        '
    bool 'Enable LEON3 Debug support unit    ' CONFIG_DSU_ENABLE
    if [ "$CONFIG_DSU_ENABLE" = "y" ]; then
      bool 'Instruction trace buffer' CONFIG_DSU_ITRACE
      if [ "$CONFIG_DSU_ITRACE" = "y" ]; then
        choice 'Instruction trace buffer size (kbytes)' \
	"1		CONFIG_DSU_ITRACESZ1 \
	2		CONFIG_DSU_ITRACESZ2 \
	4		CONFIG_DSU_ITRACESZ4 \
	8		CONFIG_DSU_ITRACESZ8 \
	16		CONFIG_DSU_ITRACESZ16" 1
      fi
      bool 'AHB trace buffer' CONFIG_DSU_ATRACE
      if [ "$CONFIG_DSU_ATRACE" = "y" ]; then
        choice 'AHB trace buffer size (kbytes)' \
	"1		CONFIG_DSU_ATRACESZ1 \
	2		CONFIG_DSU_ATRACESZ2 \
	4		CONFIG_DSU_ATRACESZ4 \
	8		CONFIG_DSU_ATRACESZ8 \
	16		CONFIG_DSU_ATRACESZ16" 1
      fi
    fi
  endmenu

#  define_bool CONFIG_LEON3FT_EN n
  mainmenu_option next_comment
  comment 'Fault-tolerance  '
   if [ "$CONFIG_LEON3FT_PRESENT" = "y" ]; then
    bool 'Use LEON3-FT processor core      ' CONFIG_LEON3FT_EN
    if [ "$CONFIG_LEON3FT_EN" = "y" ]; then
      choice 'IU Register file protection     ' \
	"None		CONFIG_IUFT_NONE \
	Parity		CONFIG_IUFT_PAR \
	PDMR 		CONFIG_IUFT_DMR \
	BCH  		CONFIG_IUFT_BCH \
	TMR		CONFIG_IUFT_TMR" None
      if [ "$CONFIG_FPU_ENABLE" = "y" ]; then
        bool 'FPU Register file protection   ' CONFIG_FPUFT_EN
      fi
      bool 'Register file error injection' CONFIG_RF_ERRINJ
      bool 'Cache memory protection        ' CONFIG_CACHE_FT_EN
      int 'Cache memory error injection' CONFIG_CACHE_ERRINJ 0
      bool 'Use LEON3FT netlist         ' CONFIG_LEON3_NETLIST
    fi
   fi
  endmenu
  mainmenu_option next_comment
    comment 'VHDL debug settings       '
    bool 'Processor disassembly to console         ' CONFIG_IU_DISAS
    if [ "$CONFIG_IU_DISAS" = "y" ]; then
      bool 'Processor disassembly in netlist         ' CONFIG_IU_DISAS_NET
    fi
    bool '32-bit program counters       ' CONFIG_DEBUG_PC32
  endmenu
fi
endmenu

