linux-arch.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Paul Bolle <pebolle@tiscali.nl>
To: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [PATCH v3 10/15] h8300: Build scripts
Date: Sun, 15 Feb 2015 20:23:04 +0100	[thread overview]
Message-ID: <1424028184.9418.99.camel@x220> (raw)
In-Reply-To: <1423986573-2329-11-git-send-email-ysato@users.sourceforge.jp>

On Sun, 2015-02-15 at 16:49 +0900, Yoshinori Sato wrote:
> Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> ---
>  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.

> +config ZONE_DMA
> +	bool
> +	default y
> +
> +config FPU
> +	bool
> +	default n

Why is this needed?

> +
> +config RWSEM_GENERIC_SPINLOCK
> +	bool
> +	default y
> +
> +config RWSEM_XCHGADD_ALGORITHM
> +	bool
> +	default n

Not strictly needed.

> +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.

> +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).

> +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.

> +	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)?

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

> +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?

> +	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?

> +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?

> +	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.

> +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@users.sourceforge.jp>
> +#
> +
> +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

  parent reply	other threads:[~2015-02-15 19:23 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-15  7:49 [PATCH v3 00/15] Revert h8300 archtecture Yoshinori Sato
2015-02-15  7:49 ` Yoshinori Sato
2015-02-15  7:49 ` [PATCH v3 01/15] h8300: Assembly headers Yoshinori Sato
2015-02-15  9:11   ` Geert Uytterhoeven
2015-02-17  7:39     ` Yoshinori Sato
2015-02-15  7:49 ` [PATCH v3 02/15] h8300: UAPI headers Yoshinori Sato
2015-02-15  7:49 ` [PATCH v3 03/15] h8300: Exception and Interrupt handling Yoshinori Sato
2015-02-15  7:49   ` Yoshinori Sato
2015-02-15  7:49 ` [PATCH v3 04/15] h8300: kernel booting Yoshinori Sato
2015-02-15  7:49   ` Yoshinori Sato
2015-02-15  7:49 ` [PATCH v3 05/15] h8300: Process and signal Yoshinori Sato
2015-02-15  7:49   ` Yoshinori Sato
2015-02-15  8:11   ` Yoshinori Sato
2015-02-15 10:33     ` Paul Bolle
2015-02-15 10:33       ` Paul Bolle
2015-02-17  7:07       ` Yoshinori Sato
2015-02-17  7:07         ` Yoshinori Sato
2015-02-15 19:38   ` Richard Weinberger
2015-02-17  7:09     ` Yoshinori Sato
2015-02-17  7:09       ` Yoshinori Sato
2015-02-15  7:49 ` [PATCH v3 06/15] h8300 CPU depend helpers Yoshinori Sato
2015-02-15  7:49   ` Yoshinori Sato
2015-02-15  7:49 ` [PATCH v3 07/15] h8300: miscellaneous functions Yoshinori Sato
2015-02-15  7:49   ` Yoshinori Sato
2015-02-15  7:49 ` [PATCH v3 08/15] h8300: Memory management Yoshinori Sato
2015-02-15  7:49   ` Yoshinori Sato
2015-02-15  7:49 ` [PATCH v3 09/15] h8300: library functions Yoshinori Sato
2015-02-15  7:49 ` [PATCH v3 10/15] h8300: Build scripts Yoshinori Sato
2015-02-15  7:49   ` Yoshinori Sato
2015-02-15 19:23   ` Paul Bolle [this message]
2015-02-17  7:39     ` Yoshinori Sato
2015-02-17  9:46       ` Paul Bolle
2015-02-17  9:46         ` Paul Bolle
2015-02-18  8:08         ` Yoshinori Sato
2015-02-15  7:49 ` [PATCH v3 11/15] h8300: clock driver Yoshinori Sato
2015-02-15  7:49   ` Yoshinori Sato
2015-02-15  7:49 ` [PATCH v3 12/15] h8300: clocksource Yoshinori Sato
2015-02-15  7:49   ` Yoshinori Sato
2015-02-15  7:49 ` [PATCH v3 13/15] h8300: configs Yoshinori Sato
2015-02-15  7:49 ` [PATCH v3 14/15] serial: Add h8300 Yoshinori Sato
2015-02-15  7:49   ` Yoshinori Sato
2015-02-15  7:49 ` [PATCH v3 15/15] Add ELF machine Yoshinori Sato
2015-02-15  7:49   ` Yoshinori Sato
2015-02-15 10:59 ` [PATCH v3 00/15] Revert h8300 archtecture Paul Bolle
2015-02-17  7:39   ` Yoshinori Sato
2015-02-17  7:39     ` Yoshinori Sato

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1424028184.9418.99.camel@x220 \
    --to=pebolle@tiscali.nl \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ysato@users.sourceforge.jp \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).