Re: [PATCH v3 10/15] h8300: Build scripts

From: Yoshinori Sato
Date: Tue Feb 17 2015 - 02:39:34 EST


At Sun, 15 Feb 2015 20:23:04 +0100,
Paul Bolle wrote:
>
> On Sun, 2015-02-15 at 16:49 +0900, Yoshinori Sato wrote:
> > Signed-off-by: Yoshinori Sato <ysato@xxxxxxxxxxxxxxxxxxxx>
> > ---
> > arch/h8300/Kconfig | 119 +++++++++++++++++++++++++++++++++++
> > arch/h8300/Kconfig.cpu | 136 ++++++++++++++++++++++++++++++++++++++++
> > arch/h8300/Kconfig.debug | 23 +++++++
> > arch/h8300/Makefile | 45 +++++++++++++
> > arch/h8300/kernel/Makefile | 16 +++++
> > arch/h8300/kernel/vmlinux.lds.S | 85 +++++++++++++++++++++++++
> > 6 files changed, 424 insertions(+)
> > create mode 100644 arch/h8300/Kconfig
> > create mode 100644 arch/h8300/Kconfig.cpu
> > create mode 100644 arch/h8300/Kconfig.debug
> > create mode 100644 arch/h8300/Makefile
> > create mode 100644 arch/h8300/kernel/Makefile
> > create mode 100644 arch/h8300/kernel/vmlinux.lds.S
> >
> > diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig
> > new file mode 100644
> > index 0000000..828c356
> > --- /dev/null
> > +++ b/arch/h8300/Kconfig
> > @@ -0,0 +1,119 @@
> > +config H8300
> > + bool
> > + default y
> > + select HAVE_IDE
> > + select GENERIC_ATOMIC64
> > + select HAVE_UID16
> > + select VIRT_TO_BUS
> > + select ARCH_WANT_IPC_PARSE_VERSION
> > + select GENERIC_IRQ_SHOW
> > + select FRAME_POINTER
> > + select GENERIC_CPU_DEVICES
> > + select MODULES_USE_ELF_RELA
> > + select GENERIC_CLOCKEVENTS
> > + select CLKDEV_LOOKUP
> > + select COMMON_CLK
> > + select HAVE_ARCH_TRACEHOOK
> > + select ARCH_WANT_FRAME_POINTERS
> > +
> > +config MMU
> > + bool
> > + default n
> > +
> > +config SWAP
> > + bool
> > + default n
> > +
>
> MMU will always be 'n'. (So the entry for MMU is not strictly needed,
> but I guess it is clearer to explicitly set this to 'n'.) But that means
> there's no reason here to mask the global SWAP config (see
> init/Kconfig), as that will also always be 'n' for H8300.

OK.
remove it.

> > +config ZONE_DMA
> > + bool
> > + default y
> > +
> > +config FPU
> > + bool
> > + default n
>
> Why is this needed?

Inneeded.
Remove it.

> > +
> > +config RWSEM_GENERIC_SPINLOCK
> > + bool
> > + default y
> > +
> > +config RWSEM_XCHGADD_ALGORITHM
> > + bool
> > + default n
>
> Not strictly needed.

OK.

>
> > +config ARCH_HAS_ILOG2_U32
> > + bool
> > + default n
> > +
>
> Ditto.
>
> > +config ARCH_HAS_ILOG2_U64
> > + bool
> > + default n
> > +
>
> Ditto.
>
> > +config GENERIC_HWEIGHT
> > + bool
> > + default y
> > +
> > +config GENERIC_CALIBRATE_DELAY
> > + bool
> > + default y
> > +
> > +config GENERIC_BUG
> > + bool
> > + depends on BUG
> > +
>
> GENERIC_BUG can never be set for H8300, so this entry is not needed.

OK.
Remove.

> > +config TIME_LOW_RES
> > + bool
> > + default y
> > +
> > +config NO_IOPORT_MAP
> > + def_bool y
> > +
> > +config NO_DMA
> > + def_bool n
>
> Not needed (please note that only a few architectures have an entry for
> NO_DMA).

OK.
Remove.

> > +config ISA
> > + def_bool n
> > +
> > +config PCI
> > + def_bool n
> > +
>
> Neither ISA nor PCI will ever be set, won't they? So you might as well
> drop these too.
>
> > +config HZ
> > + int
> > + default 100
> > +
> > +config NR_CPUS
> > + int
>
> Eight spaces instead of one tab.

OK.

> > + default 1
> > +
> > +source "init/Kconfig"
> > +
> > +source "kernel/Kconfig.freezer"
> > +
> > +source "arch/h8300/Kconfig.cpu"
> > +
> > +menu "Kernel Features"
> > +
> > +source "kernel/Kconfig.preempt"
> > +
> > +source "mm/Kconfig"
> > +
> > +endmenu
> > +
> > +menu "Executable file formats"
> > +
> > +source "fs/Kconfig.binfmt"
> > +
> > +endmenu
> > +
> > +source "net/Kconfig"
> > +
> > +source "drivers/Kconfig"
> > +
> > +source "fs/Kconfig"
> > +
> > +source "arch/h8300/Kconfig.debug"
> > +
> > +source "security/Kconfig"
> > +
> > +source "crypto/Kconfig"
> > +
> > +source "lib/Kconfig"
> > diff --git a/arch/h8300/Kconfig.cpu b/arch/h8300/Kconfig.cpu
> > new file mode 100644
> > index 0000000..2eaa797
> > --- /dev/null
> > +++ b/arch/h8300/Kconfig.cpu
> > @@ -0,0 +1,136 @@
> > +menu "Processor type and features"
> > +
> > +choice
> > + prompt "H8/300 platform"
> > +
> > +config H8300_AE3068
> > + bool "AE-3068/69"
> > + select H83069
> > + select RAMKERNEL
> > + help
> > + AKI-H8/3068F / AKI-H8/3069F Flashmicom LAN Board Support
> > + More Information. (Japanese Only)
> > + <http://akizukidenshi.com/catalog/default.aspx>
> > + AE-3068/69 Evaluation Board Support
> > + More Information.
> > + <http://www.microtronique.com/ae3069lan.htm>
> > +
> > +config H8300_H8MAX
> > + bool "H8MAX"
> > + select H83069
> > + select RAMKERNEL
> > + help
> > + H8MAX Evaluation Board Support
> > + More Information. (Japanese Only)
> > + <http://strawberry-linux.com/h8/index.html>
> > +
> > +config H8300_KANEBEBE
> > + bool "KaneBebe"
> > + select H83069
> > + select RAMKERNEL
> > + help
> > + KaneBebe Evalition Board Support
> > +
> > +config H8300H_SIM
> > + bool "H8/300H GDB Simulator"
> > + select H83069
> > + select ROMKERNEL
> > + help
> > + GDB Simulator Support
> > + More Information.
> > + <http://sourceware.org/sid/>
> > +
> > +config H8S_EDOSK2674
> > + bool "EDOSK-2674"
> > + select H8S2678
> > + select RAMKERNEL
> > + help
> > + Renesas EDOSK-2674 Evaluation Board Support
> > + More Information.
> > + <http://www.azpower.com/H8-uClinux/index.html>
> > + <http://www.renesas.eu/products/tools/introductory_evaluation_tools/evaluation_development_os_kits/edosk2674r/edosk2674r_software_tools_root.jsp>
> > +
> > +config H8S_SIM
> > + bool "H8S GDB Simulator"
> > + select H8S2678
> > + select ROMKERNEL
> > + help
> > + GDB Simulator Support
> > + More Information.
> > + <http://sourceware.org/sid/>
> > +
> > +endchoice
> > +
> > +choice
> > + prompt "CPU Selection"
> > +
> > +config H83069
> > + bool "H8/3065,3066,3067,3068,3069"
> > + select CPU_H8300H
> > + select H8300_TMR8
> > + select H8300_TMR16
> > +
> > +config H8S2678
> > + bool "H8S/2670,2673,2674R,2675,2676"
> > + select CPU_H8S
> > + select H8300_TMR8
> > + select H8300_TPU
> > +
> > +endchoice
> > +
>
> All platforms either select H83069 or H8S2678. So this choice looks odd.
> Can't you just drop the choice wrapper, and make this two entries
> without prompt (ie, make it two symbols that are selected only, and
> never set manually)?

Yes. not needed choice.
Remove.

> Also note that H8300_TMR8 will always be set. So that it seems not
> really needed (ie, it's an alias for H8300).

This entry obsoleted.
Remove.

> > +config CPU_CLOCK
> > + int "CPU Clock Frequency"
> > + depends on ROMKERNEL
> > + default "200000000" if H8300H_AKI3068NET || H8300H_SIM
>
> There's no symbol H8300H_AKI3068NET. Why is that (optional) dependency
> added?
>
> > + default "250000000" if H8300H_H8MAX || H8300H_KANEBEBE
>
> Neither symbols exist. Why is this default needed?

And this not used current code.
Remove.

> > + default "333333333" if H8S_EDOSK2674 || H8S_SIM
> > + help
> > + CPU Clock Frequency
> > +
> > +choice
> > + prompt "Kernel executes from"
> > + ---help---
> > + Choose the memory type that the kernel will be running in.
> > +
> > +config RAMKERNEL
> > + bool "RAM"
> > + help
> > + The kernel will be resident in RAM when running.
> > +
> > +config ROMKERNEL
> > + bool "ROM"
> > + help
> > + The kernel will be resident in FLASH/ROM when running.
> > +endchoice
>
> All platforms either select RAMKERNEL or ROMKERNEL. So this choice also
> looks odd. Can't you, again, drop the choice wrapper, and make these two
> entries without prompt?

Hmm.
It's considered.

> > +config CPU_H8300H
> > + bool
> > + depends on H83069
> > + default y
> > +
> > +config CPU_H8S
> > + bool
> > + depends on H8S2678
> > + default y
> > +
> > +config ROMSIZE
> > + hex "ROM size"
> > + depends on ROMKERNEL
> > + default 0x200000
> > +
> > +config RAMBASE
> > + hex "RAM base address"
> > + default 0x400000
> > +
> > +config RAMSIZE
> > + hex "RAM size"
> > + depends on ROMKERNEL
> > + default 0x200000 if H8300_AE3068 || H8300_H8MAX || H8300H_SIM
> > + default 0x400000 if H8300_KANEBEBE
> > + default 0x800000 if H8S_EDOSK2674 || H8S_SIM
> > +
> > +config OFFSET
> > + hex "Load offset"
>
> Eight spaces instead of one tab?

OK.

> > + default 0
> > +
> > +endmenu
> > diff --git a/arch/h8300/Kconfig.debug b/arch/h8300/Kconfig.debug
> > new file mode 100644
> > index 0000000..eb72b01
> > --- /dev/null
> > +++ b/arch/h8300/Kconfig.debug
> > @@ -0,0 +1,23 @@
> > +menu "Kernel hacking"
> > +
> > +source "lib/Kconfig.debug"
> > +
> > +config FULLDEBUG
> > + bool "Full Symbolic/Source Debugging support"
> > + help
> > + Enable debugging symbols on kernel build.
> > +
> > +config HIGHPROFILE
> > + bool "Use fast second timer for profiling"
> > + help
> > + Use a fast secondary clock to produce profiling information.
> > +
> > +config NO_KERNEL_MSG
> > + bool "Suppress Kernel BUG Messages"
> > + help
> > + Do not output any debug BUG messages within the kernel.
> > +
> > +config SH_STANDARD_BIOS
> > + def_bool n
> > +
>
> I don't think this entry is needed.

This entry using sh-sci.

> > +endmenu
> > diff --git a/arch/h8300/Makefile b/arch/h8300/Makefile
> > new file mode 100644
> > index 0000000..44e915c
> > --- /dev/null
> > +++ b/arch/h8300/Makefile
> > @@ -0,0 +1,45 @@
> > +#
> > +# arch/h8300/Makefile
> > +#
> > +# This file is subject to the terms and conditions of the GNU General Public
> > +# License. See the file "COPYING" in the main directory of this archive
> > +# for more details.
> > +#
> > +# (C) Copyright 2002-2015 Yoshinori Sato <ysato@xxxxxxxxxxxxxxxxxxxx>
> > +#
> > +
> > +cflags-$(CONFIG_CPU_H8300H) := -mh
> > +aflags-$(CONFIG_CPU_H8300H) := -mh -Wa,--mach=h8300h
> > +ldflags-$(CONFIG_CPU_H8300H) := -mh8300helf_linux
> > +cflags-$(CONFIG_CPU_H8S) := -ms
> > +aflags-$(CONFIG_CPU_H8S) := -ms -Wa,--mach=h8300s
> > +ldflags-$(CONFIG_CPU_H8S) := -mh8300self_linux
> > +
> > +KBUILD_CFLAGS += $(cflags-y)
> > +KBUILD_CFLAGS += -mint32 -fno-builtin
> > +KBUILD_CFLAGS += -D__linux__
> > +KBUILD_CFLAGS += -DUTS_SYSNAME=\"uClinux\"
> > +KBUILD_AFLAGS += $(aflags-y)
> > +LDFLAGS += $(ldflags-y)
> > +
> > +CROSS_COMPILE := h8300-unknown-linux-
> > +
> > +core-y += arch/$(ARCH)/kernel/ arch/$(ARCH)/mm/
> > +
> > +libs-y += arch/$(ARCH)/lib/
> > +
> > +boot := arch/h8300/boot
> > +
> > +archmrproper:
> > +
> > +archclean:
> > + $(Q)$(MAKE) $(clean)=$(boot)
> > +
> > +vmlinux.srec vmlinux.bin zImage uImage.bin: vmlinux
> > + $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
> > +
> > +define archhelp
> > + @echo 'vmlinux.bin - Create raw binary'
> > + @echo 'vmlinux.srec - Create srec binary'
> > + @echo 'zImage - Compressed kernel image'
> > +endef
> > diff --git a/arch/h8300/kernel/Makefile b/arch/h8300/kernel/Makefile
> > new file mode 100644
> > index 0000000..0b5fe00
> > --- /dev/null
> > +++ b/arch/h8300/kernel/Makefile
> > @@ -0,0 +1,16 @@
> > +#
> > +# Makefile for the linux kernel.
> > +#
> > +
> > +extra-y := vmlinux.lds
> > +
> > +obj-y := process.o traps.o ptrace.o \
> > + signal.o setup.o syscalls.o \
> > + irq.o entry.o dma.o cpu/
> > +
> > +obj-$(CONFIG_ROMKERNEL) += head_rom.o
> > +obj-$(CONFIG_RAMKERNEL) += head_ram.o
> > +
> > +obj-$(CONFIG_MODULES) += module.o h8300_ksyms.o
> > +obj-$(CONFIG_H8300H_SIM) += sim-console.o
> > +obj-$(CONFIG_H8S_SIM) += sim-console.o
> > diff --git a/arch/h8300/kernel/vmlinux.lds.S b/arch/h8300/kernel/vmlinux.lds.S
> > new file mode 100644
> > index 0000000..e1b49aa
> > --- /dev/null
> > +++ b/arch/h8300/kernel/vmlinux.lds.S
> > @@ -0,0 +1,85 @@
> > +#include <asm-generic/vmlinux.lds.h>
> > +#include <asm/page.h>
> > +
> > +#define ROMTOP 0x000000
> > +#define RAMTOP CONFIG_RAMBASE
> > +
> > +jiffies = jiffies_64 + 4;
> > +
> > +ENTRY(_start)
> > +
> > +SECTIONS
> > +{
> > +#if defined(CONFIG_ROMKERNEL)
> > + . = ROMTOP;
> > + .vectors :
> > + {
> > + _vector = . ;
> > + *(.vector*)
> > + }
> > +#else
> > + . = RAMTOP;
> > + _ramstart = .;
> > + . = . + CONFIG_OFFSET;
> > +#endif
> > + _text = .;
> > + HEAD_TEXT_SECTION
> > + .text : {
> > + _stext = . ;
> > + TEXT_TEXT
> > + SCHED_TEXT
> > + LOCK_TEXT
> > +#if defined(CONFIG_ROMKERNEL)
> > + *(.int_redirect)
> > +#endif
> > + _etext = . ;
> > + }
> > + EXCEPTION_TABLE(16)
> > + NOTES
> > + RO_DATA(4)
> > +#if defined(CONFIG_ROMKERNEL)
> > + .init.text : {
> > + _sinittext = .;
> > + INIT_TEXT
> > + _einittext = .;
> > + }
> > + SECURITY_INIT
> > +#endif
> > + ROMEND = .;
> > +#if defined(CONFIG_ROMKERNEL)
> > + . = RAMTOP;
> > + _ramstart = .;
> > + .data : AT(ROMEND)
> > +#else
> > + .data :
> > +#endif
> > + {
> > + _sdata = . ;
> > + __data_start = . ;
> > + INIT_TASK_DATA(0x2000)
> > + NOSAVE_DATA
> > + PAGE_ALIGNED_DATA(0x1000)
> > + CACHELINE_ALIGNED_DATA(0x0002)
> > + READ_MOSTLY_DATA(0x0002)
> > + DATA_DATA
> > + CONSTRUCTORS
> > + }
> > + . = ALIGN(0x4) ;
> > + __init_begin = .;
> > +#if defined(CONFIG_RAMKERNEL)
> > + INIT_TEXT_SECTION(4)
> > +#endif
> > + INIT_DATA_SECTION(4)
> > +#if defined(CONFIG_RAMKERNEL)
> > + SECURITY_INIT
> > +#endif
> > + __init_end = .;
> > + _edata = . ;
> > + _begin_data = LOADADDR(.data);
> > + _sbss =.;
> > + BSS_SECTION(4,4,4)
> > + _ebss =.;
> > + _ramend = .;
> > + _end = .;
> > + DISCARDS
> > +}
>
>
> Paul Bolle
>

--
Yoshinori Sato
<ysato@xxxxxxxxxxxxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/