start main_menu ############# # SYMBOLS # ############# symbols ARCH_ARM 'ARM' arm_cpu_type 'ARM Processor Type' CPU_ARM1136 'ARM1136 - To be added' CPU_ARM11MPCORE 'ARM11 MPCore - To be added' CPU_ARM926 'ARM926EJ-S' CPU_CORTEXA8 'ARM Cortex-A8 - Not supported' arm_subarch_type 'ARM Architecture Family' SUBARCH_V5 'ARM v5 Architecture' SUBARCH_V6 'ARM v6 Architecture, To be added' SUBARCH_V7 'ARM v7 Architecture, To be added' arm_platform_type 'ARM Platform Type' PLATFORM_EB 'Realview EB Platform, Unsupported yet' PLATFORM_AB926 'Versatile AB926 Platform, Unsupported yet' PLATFORM_PB926 'Versatile PB926 Platform' PLATFORM_PB11MPCORE 'Realview PB11MPCore Platform' PLATFORM_PBA8 'Realview PB-A8 Platform' DRIVER_UART_PL011 'ARM UART Primecell driver PL011' DRIVER_TIMER_SP804 'ARM Dual Timer Primecell driver SP804' DRIVER_IRQ_PL190 'ARM Vectored Interrupt Controller PL190' DRIVER_IRQ_GIC 'ARM Generic Interrupt Controller GIC' main_menu 'Codezero Microkernel Configurator' arm_menu 'ARM Architecture Configuration' arm_cpu_menu 'ARM CPU type' arm_platform_menu 'ARM Platform Type' drivers_menu 'Platform Drivers' arch_type 'Main architecture' ############# # CHOICES # ############# choices arch_type ARCH_ARM default ARCH_ARM choices arm_subarch_type SUBARCH_V5 SUBARCH_V6 SUBARCH_V7 default SUBARCH_V5 choices arm_cpu_type CPU_ARM926 CPU_ARM1136 CPU_ARM11MPCORE CPU_CORTEXA8 default CPU_ARM926 choices arm_platform_type PLATFORM_EB PLATFORM_AB926 PLATFORM_PB926 PLATFORM_PB11MPCORE PLATFORM_PBA8 default PLATFORM_PB926 ############# # MENUS # ############# menu arm_cpu_menu arm_cpu_type menu arm_platform_menu arm_platform_type menu drivers_menu DRIVER_UART_PL011 DRIVER_TIMER_SP804 DRIVER_IRQ_PL190 DRIVER_IRQ_GIC menu arm_menu arm_subarch_type arm_cpu_menu arm_platform_menu drivers_menu menu main_menu arch_type arm_menu CONTAINERS% containers_menu ############# # RULES # ############# #Platform rules: unless SUBARCH_V5 suppress PLATFORM_PB926 unless SUBARCH_V5 suppress PLATFORM_AB926 unless SUBARCH_V6 suppress PLATFORM_PB11MPCORE unless SUBARCH_V7 suppress PLATFORM_PBA8 #CPU rules: unless SUBARCH_V5 suppress CPU_ARM926 unless SUBARCH_V6 suppress CPU_ARM1136 unless SUBARCH_V6 suppress CPU_ARM11MPCORE unless SUBARCH_V7 suppress CPU_CORTEXA8 # NOTE: Unlike menus, choices dont take { sym } model of visibility # dependencies. Instead, a choice symbol is declared in a menu, and # suppress statement is used to make sym visible, instead of a # { sym } model under the choices. (See manual for { sym } usage). unless SUBARCH_V5 suppress PLATFORM_PB926 unless ARCH_ARM suppress arm_menu unless PLATFORM_PB926 or PLATFORM_AB926 suppress DRIVER_IRQ_PL190 unless PLATFORM_EB suppress CPU_ARM1136 unless PLATFORM_EB or PLATFORM_PBA8 or PLATFORM_PB11MPCORE suppress DRIVER_IRQ_GIC default DRIVER_UART_PL011 from y default DRIVER_TIMER_SP804 from y default DRIVER_IRQ_PL190 from y default DRIVER_IRQ_GIC from y # Container Rules symbols CONTAINERS 'Number of containers' CONT0_TYPE_LINUX 'Linux Container' CONT0_TYPE_BARE 'Bare Container' CONT0_TYPE_C0_POSIX 'Codezero POSIX Services Container (mm0, fs0 microkernel services)' CONT0_OPT_DIRNAME 'Containers directory name under conts' CONT0_PHYSMEM_REGIONS 'Container 0 number of physical regions' CONT0_PHYS0_START 'Container 0 physical start address' CONT0_PHYS0_END 'Container 0 physical end address' CONT0_PHYS1_START 'Container 0 physical start address' CONT0_PHYS1_END 'Container 0 physical end address' CONT0_PHYS2_START 'Container 0 physical start address' CONT0_PHYS2_END 'Container 0 physical end address' CONT0_PHYS3_START 'Container 0 physical start address' CONT0_PHYS3_END 'Container 0 physical end address' CONT0_VIRTMEM_REGIONS 'Container 0 number of virtual regions' CONT0_VIRT0_START 'Container 0 virtual start address' CONT0_VIRT0_END 'Container 0 virtual end address' CONT0_VIRT1_START 'Container 0 virtual start address' CONT0_VIRT1_END 'Container 0 virtual end address' CONT0_VIRT2_START 'Container 0 virtual start address' CONT0_VIRT2_END 'Container 0 virtual end address' CONT0_VIRT3_START 'Container 0 virtual start address' CONT0_VIRT3_END 'Container 0 virtual end address' CONT0_VIRT4_START 'Container 0 virtual start address' CONT0_VIRT4_END 'Container 0 virtual end address' CONT0_VIRT5_START 'Container 0 virtual start address' CONT0_VIRT5_END 'Container 0 virtual end address' CONT1_TYPE_LINUX 'Linux Container' CONT1_TYPE_BARE 'Bare Container' CONT1_TYPE_C0_POSIX 'Codezero POSIX Services Container (mm0, fs0 microkernel services)' CONT1_OPT_DIRNAME 'Containers directory name under conts' CONT1_PHYSMEM_REGIONS 'Container 1 number of physical regions' CONT1_PHYS0_START 'Container 1 physical start address' CONT1_PHYS0_END 'Container 1 physical end address' CONT1_PHYS1_START 'Container 1 physical start address' CONT1_PHYS1_END 'Container 1 physical end address' CONT1_PHYS2_START 'Container 1 physical start address' CONT1_PHYS2_END 'Container 1 physical end address' CONT1_PHYS3_START 'Container 1 physical start address' CONT1_PHYS3_END 'Container 1 physical end address' CONT1_VIRTMEM_REGIONS 'Container 1 number of virtual regions' CONT1_VIRT0_START 'Container 1 virtual start address' CONT1_VIRT0_END 'Container 1 virtual end address' CONT1_VIRT1_START 'Container 1 virtual start address' CONT1_VIRT1_END 'Container 1 virtual end address' CONT1_VIRT2_START 'Container 1 virtual start address' CONT1_VIRT2_END 'Container 1 virtual end address' CONT1_VIRT3_START 'Container 1 virtual start address' CONT1_VIRT3_END 'Container 1 virtual end address' CONT1_VIRT4_START 'Container 1 virtual start address' CONT1_VIRT4_END 'Container 1 virtual end address' CONT1_VIRT5_START 'Container 1 virtual start address' CONT1_VIRT5_END 'Container 1 virtual end address' CONT0_PAGER_LMA 'Container 0 Pager LMA' CONT0_PAGER_VMA 'Container 0 Pager VMA' CONT0_PAGER_SIZE 'Container 0 Pager Initial map size (Optional)' CONT0_LINUX_PAGE_OFFSET 'Container 0 Linux PAGE_OFFSET parameter' CONT0_LINUX_TEXT_OFFSET 'Container 0 Linux TEXT_OFFSET parameter' CONT0_LINUX_PHYS_OFFSET 'Container 0 Linux PHYS_OFFSET parameter' CONT0_LINUX_MAPSIZE 'Container 0 Linux Initial kernel map size parameter' CONT1_PAGER_LMA 'Container 1 Pager LMA' CONT1_PAGER_VMA 'Container 1 Pager VMA' CONT1_PAGER_SIZE 'Container 1 Pager Initial map size (Optional)' CONT1_LINUX_PAGE_OFFSET 'Container 1 Linux PAGE_OFFSET parameter' CONT1_LINUX_TEXT_OFFSET 'Container 1 Linux TEXT_OFFSET parameter' CONT1_LINUX_PHYS_OFFSET 'Container 1 Linux PHYS_OFFSET parameter' CONT1_LINUX_MAPSIZE 'Container 1 Linux Initial kernel map size parameter' default CONT0_PAGER_LMA from 0x0 default CONT0_PAGER_VMA from 0x0 default CONT0_PAGER_SIZE from 0x0 default CONT0_LINUX_PAGE_OFFSET from 0x0 default CONT0_LINUX_TEXT_OFFSET from 0x0 default CONT0_LINUX_PHYS_OFFSET from 0x0 default CONT0_LINUX_MAPSIZE from 0x0 default CONT1_PAGER_LMA from 0x0 default CONT1_PAGER_VMA from 0x0 default CONT1_PAGER_SIZE from 0x0 default CONT1_LINUX_PAGE_OFFSET from 0x0 default CONT1_LINUX_TEXT_OFFSET from 0x0 default CONT1_LINUX_PHYS_OFFSET from 0x0 default CONT1_LINUX_MAPSIZE from 0x0 default CONTAINERS from 2 default CONT0_VIRTMEM_REGIONS from 1 default CONT0_PHYSMEM_REGIONS from 1 default CONT1_VIRTMEM_REGIONS from 1 default CONT1_PHYSMEM_REGIONS from 1 # Define limits on virtual and physical memory regions of a _single_ container 0. Too much code! when CONT0_VIRTMEM_REGIONS < 2 suppress CONT0_VIRT1_START CONT0_VIRT1_END when CONT0_VIRTMEM_REGIONS < 2 suppress CONT0_VIRT2_START CONT0_VIRT2_END when CONT0_VIRTMEM_REGIONS < 2 suppress CONT0_VIRT3_START CONT0_VIRT3_END when CONT0_VIRTMEM_REGIONS < 2 suppress CONT0_VIRT4_START CONT0_VIRT4_END when CONT0_VIRTMEM_REGIONS < 2 suppress CONT0_VIRT5_START CONT0_VIRT5_END when CONT0_VIRTMEM_REGIONS < 3 suppress CONT0_VIRT2_START CONT0_VIRT2_END when CONT0_VIRTMEM_REGIONS < 3 suppress CONT0_VIRT3_START CONT0_VIRT3_END when CONT0_VIRTMEM_REGIONS < 3 suppress CONT0_VIRT4_START CONT0_VIRT4_END when CONT0_VIRTMEM_REGIONS < 3 suppress CONT0_VIRT5_START CONT0_VIRT5_END when CONT0_VIRTMEM_REGIONS < 4 suppress CONT0_VIRT3_START CONT0_VIRT3_END when CONT0_VIRTMEM_REGIONS < 4 suppress CONT0_VIRT4_START CONT0_VIRT4_END when CONT0_VIRTMEM_REGIONS < 4 suppress CONT0_VIRT5_START CONT0_VIRT5_END when CONT0_VIRTMEM_REGIONS < 5 suppress CONT0_VIRT4_START CONT0_VIRT4_END when CONT0_VIRTMEM_REGIONS < 5 suppress CONT0_VIRT5_START CONT0_VIRT5_END when CONT0_VIRTMEM_REGIONS < 6 suppress CONT0_VIRT5_START CONT0_VIRT5_END when CONT0_PHYSMEM_REGIONS < 2 suppress CONT0_PHYS1_START CONT0_PHYS1_END when CONT0_PHYSMEM_REGIONS < 2 suppress CONT0_PHYS2_START CONT0_PHYS2_END when CONT0_PHYSMEM_REGIONS < 2 suppress CONT0_PHYS3_START CONT0_PHYS3_END when CONT0_PHYSMEM_REGIONS < 3 suppress CONT0_PHYS2_START CONT0_PHYS2_END when CONT0_PHYSMEM_REGIONS < 3 suppress CONT0_PHYS3_START CONT0_PHYS3_END when CONT0_PHYSMEM_REGIONS < 4 suppress CONT0_PHYS3_START CONT0_PHYS3_END # Define limits on virtual and physical memory regions of a _single_ container 0. Too much code! when CONT1_VIRTMEM_REGIONS < 2 suppress CONT1_VIRT1_START CONT1_VIRT1_END when CONT1_VIRTMEM_REGIONS < 2 suppress CONT1_VIRT2_START CONT1_VIRT2_END when CONT1_VIRTMEM_REGIONS < 2 suppress CONT1_VIRT3_START CONT1_VIRT3_END when CONT1_VIRTMEM_REGIONS < 2 suppress CONT1_VIRT4_START CONT1_VIRT4_END when CONT1_VIRTMEM_REGIONS < 2 suppress CONT1_VIRT5_START CONT1_VIRT5_END when CONT1_VIRTMEM_REGIONS < 3 suppress CONT1_VIRT2_START CONT1_VIRT2_END when CONT1_VIRTMEM_REGIONS < 3 suppress CONT1_VIRT3_START CONT1_VIRT3_END when CONT1_VIRTMEM_REGIONS < 3 suppress CONT1_VIRT4_START CONT1_VIRT4_END when CONT1_VIRTMEM_REGIONS < 3 suppress CONT1_VIRT5_START CONT1_VIRT5_END when CONT1_VIRTMEM_REGIONS < 4 suppress CONT1_VIRT3_START CONT1_VIRT3_END when CONT1_VIRTMEM_REGIONS < 4 suppress CONT1_VIRT4_START CONT1_VIRT4_END when CONT1_VIRTMEM_REGIONS < 4 suppress CONT1_VIRT5_START CONT1_VIRT5_END when CONT1_VIRTMEM_REGIONS < 5 suppress CONT1_VIRT4_START CONT1_VIRT4_END when CONT1_VIRTMEM_REGIONS < 5 suppress CONT1_VIRT5_START CONT1_VIRT5_END when CONT1_VIRTMEM_REGIONS < 6 suppress CONT1_VIRT5_START CONT1_VIRT5_END when CONT1_PHYSMEM_REGIONS < 2 suppress CONT1_PHYS1_START CONT1_PHYS1_END when CONT1_PHYSMEM_REGIONS < 2 suppress CONT1_PHYS2_START CONT1_PHYS2_END when CONT1_PHYSMEM_REGIONS < 2 suppress CONT1_PHYS3_START CONT1_PHYS3_END when CONT1_PHYSMEM_REGIONS < 3 suppress CONT1_PHYS2_START CONT1_PHYS2_END when CONT1_PHYSMEM_REGIONS < 3 suppress CONT1_PHYS3_START CONT1_PHYS3_END when CONT1_PHYSMEM_REGIONS < 4 suppress CONT1_PHYS3_START CONT1_PHYS3_END default CONT0_PHYS0_START from 0x0 default CONT0_PHYS0_END from 0x0 default CONT0_PHYS1_START from 0x0 default CONT0_PHYS1_END from 0x0 default CONT0_PHYS2_START from 0x0 default CONT0_PHYS2_END from 0x0 default CONT0_PHYS3_START from 0x0 default CONT0_PHYS3_END from 0x0 default CONT0_VIRT0_START from 0x0 default CONT0_VIRT0_END from 0x0 default CONT0_VIRT1_START from 0x0 default CONT0_VIRT1_END from 0x0 default CONT0_VIRT2_START from 0x0 default CONT0_VIRT2_END from 0x0 default CONT0_VIRT3_START from 0x0 default CONT0_VIRT3_END from 0x0 default CONT0_VIRT4_START from 0x0 default CONT0_VIRT4_END from 0x0 default CONT0_VIRT5_START from 0x0 default CONT0_VIRT5_END from 0x0 default CONT1_PHYS0_START from 0x0 default CONT1_PHYS0_END from 0x0 default CONT1_PHYS1_START from 0x0 default CONT1_PHYS1_END from 0x0 default CONT1_PHYS2_START from 0x0 default CONT1_PHYS2_END from 0x0 default CONT1_PHYS3_START from 0x0 default CONT1_PHYS3_END from 0x0 default CONT1_VIRT0_START from 0x0 default CONT1_VIRT0_END from 0x0 default CONT1_VIRT1_START from 0x0 default CONT1_VIRT1_END from 0x0 default CONT1_VIRT2_START from 0x0 default CONT1_VIRT2_END from 0x0 default CONT1_VIRT3_START from 0x0 default CONT1_VIRT3_END from 0x0 default CONT1_VIRT4_START from 0x0 default CONT1_VIRT4_END from 0x0 default CONT1_VIRT5_START from 0x0 default CONT1_VIRT5_END from 0x0 default CONT0_OPT_DIRNAME from (CONT0_TYPE_LINUX==y) ? "linux" : ((CONT0_TYPE_BARE==y) ? "bare" : "noname") default CONT1_OPT_DIRNAME from (CONT1_TYPE_LINUX==y) ? "linux" : ((CONT1_TYPE_BARE==y) ? "bare" : "noname") unless CONTAINERS > 1 suppress cont1_menu require CONTAINERS < 2 implies cont1_menu==n when CONT0_TYPE_LINUX==y suppress cont0_bare_pager_params when CONT0_TYPE_BARE==y suppress cont0_linux_pager_params when CONT1_TYPE_LINUX==y suppress cont1_bare_pager_params when CONT1_TYPE_BARE==y suppress cont1_linux_pager_params symbols containers_menu 'Configure Containers' cont0_menu 'Container 0 Parameters' cont1_menu 'Container 1 Parameters' cont0_physmem_list 'Container 0 physical memory regions' cont1_physmem_list 'Container 1 physical memory regions' cont0_virtmem_list 'Container 0 Virtual memory regions' cont1_virtmem_list 'Container 1 Virtual memory regions' container0_type 'Container 0 Type' container1_type 'Container 1 Type' container0_options 'Container 0 Options' container1_options 'Container 1 Options' cont0_linux_pager_params 'Container 0 Pager parameters' cont0_bare_pager_params 'Container 0 Pager parameters' cont1_linux_pager_params 'Container 1 Pager parameters' cont1_bare_pager_params 'Container 1 Pager parameters' menu cont0_bare_pager_params CONT0_PAGER_LMA@ CONT0_PAGER_VMA@ CONT0_PAGER_SIZE@ menu cont0_linux_pager_params CONT0_LINUX_PAGE_OFFSET@ CONT0_LINUX_TEXT_OFFSET@ CONT0_LINUX_PHYS_OFFSET@ CONT0_LINUX_MAPSIZE@ menu cont1_bare_pager_params CONT1_PAGER_LMA@ CONT1_PAGER_VMA@ CONT1_PAGER_SIZE@ menu cont1_linux_pager_params CONT1_LINUX_PAGE_OFFSET@ CONT1_LINUX_TEXT_OFFSET@ CONT1_LINUX_PHYS_OFFSET@ CONT1_LINUX_MAPSIZE@ menu cont0_physmem_list CONT0_PHYSMEM_REGIONS% CONT0_PHYS0_START@ CONT0_PHYS0_END@ CONT0_PHYS1_START@ CONT0_PHYS1_END@ CONT0_PHYS2_START@ CONT0_PHYS2_END@ CONT0_PHYS3_START@ CONT0_PHYS3_END@ menu cont1_physmem_list CONT1_PHYSMEM_REGIONS% CONT1_PHYS0_START@ CONT1_PHYS0_END@ CONT1_PHYS1_START@ CONT1_PHYS1_END@ CONT1_PHYS2_START@ CONT1_PHYS2_END@ CONT1_PHYS3_START@ CONT1_PHYS3_END@ menu cont0_virtmem_list CONT0_VIRTMEM_REGIONS% CONT0_VIRT0_START@ CONT0_VIRT0_END@ CONT0_VIRT1_START@ CONT0_VIRT1_END@ CONT0_VIRT2_START@ CONT0_VIRT2_END@ CONT0_VIRT3_START@ CONT0_VIRT3_END@ CONT0_VIRT4_START@ CONT0_VIRT4_END@ CONT0_VIRT5_START@ CONT0_VIRT5_END@ menu cont1_virtmem_list CONT1_VIRTMEM_REGIONS% CONT1_VIRT0_START@ CONT1_VIRT0_END@ CONT1_VIRT1_START@ CONT1_VIRT1_END@ CONT1_VIRT2_START@ CONT1_VIRT2_END@ CONT1_VIRT3_START@ CONT1_VIRT3_END@ CONT1_VIRT4_START@ CONT1_VIRT4_END@ CONT1_VIRT5_START@ CONT1_VIRT5_END@ menu container0_options CONT0_OPT_DIRNAME$ cont0_linux_pager_params cont0_bare_pager_params cont0_physmem_list cont0_virtmem_list menu container1_options CONT1_OPT_DIRNAME$ cont1_linux_pager_params cont1_bare_pager_params cont1_physmem_list cont1_virtmem_list choices container0_type CONT0_TYPE_LINUX CONT0_TYPE_BARE CONT0_TYPE_C0_POSIX default CONT0_TYPE_LINUX choices container1_type CONT1_TYPE_LINUX CONT1_TYPE_BARE CONT1_TYPE_C0_POSIX default CONT1_TYPE_BARE menu cont0_menu container0_type container0_options menu cont1_menu container1_type container1_options menu containers_menu cont0_menu cont1_menu prefix CONFIG_ # Checklist for correct CML2 # 1) Have you defined a prompt for each menu, choice_type? # 2) Have you defined a default for each symbol? # 3) Have you put 'symbols' keyword before each symbol, menu and choice? # Important note on derived symbols # DO NOT place any declaration for derived symbols like normal symbols, # otherwise the derivation will be silently ignored, and you will be left # wondering why.