linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Vineet Gupta <Vineet.Gupta1@synopsys.com>
To: Sam Ravnborg <sam@ravnborg.org>
Cc: <linux-arch@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<arnd@arndb.de>
Subject: Re: [PATCH v3 02/71] ARC: Build system: Makefiles, Kconfig, Linker script
Date: Mon, 28 Jan 2013 11:59:36 +0530	[thread overview]
Message-ID: <51061AD0.4020200@synopsys.com> (raw)
In-Reply-To: <1359024639-21915-3-git-send-email-vgupta@synopsys.com>

Hi Sam,

On Thursday 24 January 2013 04:20 PM, Vineet Gupta wrote:
> Arnd in his review pointed out that arch Kconfig organisation has several
> deficiencies:
> 
> * Build time entries for things which can be runtime extracted from DT
>   (e.g. SDRAM size, core clk frequency..)
> * Not multi-platform-image-build friendly (choice .. endchoice constructs)
> * cpu variants support (750/770) is exclusive.
> 
> The first 2 have been fixed in subsequent patches.
> Due to the nature of the 750 and 770, it is not possible to build for
> both together, w/o special runtime glue code which would hurt
> performance.
> 
> Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
> Cc: Arnd Bergmann <arnd@arndb.de>
> Cc: Sam Ravnborg <sam@ravnborg.org>
> ---
>  arch/arc/Kbuild                |    2 +
>  arch/arc/Kconfig               |  328 ++++++++++++++++++++++++++++++++++++++++
>  arch/arc/Kconfig.debug         |   34 ++++
>  arch/arc/Makefile              |  115 ++++++++++++++
>  arch/arc/boot/Makefile         |   26 +++
>  arch/arc/include/asm/Kbuild    |    1 +
>  arch/arc/kernel/Makefile       |   16 ++
>  arch/arc/kernel/arcksyms.c     |   56 +++++++
>  arch/arc/kernel/asm-offsets.c  |   46 ++++++
>  arch/arc/kernel/vmlinux.lds.S  |  116 ++++++++++++++
>  arch/arc/lib/Makefile          |    9 +
>  arch/arc/mm/Makefile           |   10 ++
>  arch/arc/plat-arcfpga/Kconfig  |   33 ++++
>  arch/arc/plat-arcfpga/Makefile |    9 +
>  14 files changed, 801 insertions(+), 0 deletions(-)
>  create mode 100644 arch/arc/Kbuild
>  create mode 100644 arch/arc/Kconfig
>  create mode 100644 arch/arc/Kconfig.debug
>  create mode 100644 arch/arc/Makefile
>  create mode 100644 arch/arc/boot/Makefile
>  create mode 100644 arch/arc/kernel/Makefile
>  create mode 100644 arch/arc/kernel/arcksyms.c
>  create mode 100644 arch/arc/kernel/asm-offsets.c
>  create mode 100644 arch/arc/kernel/vmlinux.lds.S
>  create mode 100644 arch/arc/lib/Makefile
>  create mode 100644 arch/arc/mm/Makefile
>  create mode 100644 arch/arc/plat-arcfpga/Kconfig
>  create mode 100644 arch/arc/plat-arcfpga/Makefile
> 
> diff --git a/arch/arc/Kbuild b/arch/arc/Kbuild
> new file mode 100644
> index 0000000..082d329
> --- /dev/null
> +++ b/arch/arc/Kbuild
> @@ -0,0 +1,2 @@
> +obj-y += kernel/
> +obj-y += mm/
> diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
> new file mode 100644
> index 0000000..b0b09ae
> --- /dev/null
> +++ b/arch/arc/Kconfig
> @@ -0,0 +1,328 @@
> +#
> +# Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License version 2 as
> +# published by the Free Software Foundation.
> +#
> +
> +config ARC
> +	def_bool y
> +	select ARCH_NO_VIRT_TO_BUS
> +	# ARC Busybox based initramfs absolutely relies on DEVTMPFS for /dev
> +	select DEVTMPFS if !INITRAMFS_SOURCE=""
> +	select GENERIC_ATOMIC64
> +	select GENERIC_CLOCKEVENTS
> +	select GENERIC_FIND_FIRST_BIT
> +	# for now, we don't need GENERIC_IRQ_PROBE, CONFIG_GENERIC_IRQ_CHIP
> +	select GENERIC_IRQ_SHOW
> +	select GENERIC_PENDING_IRQ if SMP
> +	select GENERIC_SMP_IDLE_THREAD
> +	select HAVE_GENERIC_HARDIRQS
> +	select MODULES_USE_ELF_RELA
> +
> +config SCHED_OMIT_FRAME_POINTER
> +	def_bool y
> +
> +config GENERIC_CSUM
> +	def_bool y
> +
> +config RWSEM_GENERIC_SPINLOCK
> +	def_bool y
> +
> +config ARCH_FLATMEM_ENABLE
> +	def_bool y
> +
> +config MMU
> +	def_bool y
> +
> +config NO_IOPORT
> +	def_bool y
> +
> +config GENERIC_CALIBRATE_DELAY
> +	def_bool y
> +
> +config GENERIC_HWEIGHT
> +	def_bool y
> +
> +config BINFMT_ELF
> +	def_bool y
> +
> +config HAVE_LATENCYTOP_SUPPORT
> +	def_bool y
> +
> +config NO_DMA
> +	def_bool n
> +
> +source "init/Kconfig"
> +source "kernel/Kconfig.freezer"
> +
> +menu "ARC Architecture Configuration"
> +
> +choice
> +	prompt "ARC Platform"
> +	default ARC_PLAT_FPGA_LEGACY
> +
> +config ARC_PLAT_FPGA_LEGACY
> +	bool "\"Legacy\" ARC FPGA dev platform"
> +	help
> +	  Support for ARC development platforms, provided by Synopsys.
> +	  These are based on FPGA or ISS. e.g.
> +	  - ARCAngel4
> +	  - ML509
> +	  - MetaWare ISS
> +
> +#New platform adds here
> +endchoice
> +
> +menu "ARC CPU Configuration"
> +
> +choice
> +	prompt "ARC Core"
> +	default ARC_CPU_770
> +
> +config ARC_CPU_750D
> +	bool "ARC750D"
> +	help
> +	  Support for ARC750 core
> +
> +config ARC_CPU_770
> +	bool "ARC770"
> +	select ARC_CPU_REL_4_10
> +	help
> +	  Support for ARC770 core introduced with Rel 4.10 (Summer 2011)
> +	  This core has a bunch of cool new features:
> +	  -MMU-v3: Variable Page Sz (4k, 8k, 16k), bigger J-TLB (128x4)
> +                   Shared Address Spaces (for sharing TLB entires in MMU)
> +	  -Caches: New Prog Model, Region Flush
> +	  -Insns: endian swap, load-locked/store-conditional, time-stamp-ctr
> +
> +endchoice
> +
> +config CPU_BIG_ENDIAN
> +	bool "Enable Big Endian Mode"
> +	default n
> +	help
> +	  Build kernel for Big Endian Mode of ARC CPU
> +
> +menuconfig ARC_CACHE
> +	bool "Enable Cache Support"
> +	default y
> +
> +if ARC_CACHE
> +
> +config ARC_CACHE_LINE_SHIFT
> +	int "Cache Line Length (as power of 2)"
> +	range 5 7
> +	default "6"
> +	help
> +	  Starting with ARC700 4.9, Cache line length is configurable,
> +	  This option specifies "N", with Line-len = 2 power N
> +	  So line lengths of 32, 64, 128 are specified by 5,6,7, respectively
> +	  Linux only supports same line lengths for I and D caches.
> +
> +config ARC_HAS_ICACHE
> +	bool "Use Instruction Cache"
> +	default y
> +
> +config ARC_HAS_DCACHE
> +	bool "Use Data Cache"
> +	default y
> +
> +config ARC_CACHE_PAGES
> +	bool "Per Page Cache Control"
> +	default y
> +	depends on ARC_HAS_ICACHE || ARC_HAS_DCACHE
> +	help
> +	  This can be used to over-ride the global I/D Cache Enable on a
> +	  per-page basis (but only for pages accessed via MMU such as
> +	  Kernel Virtual address or User Virtual Address)
> +	  TLB entries have a per-page Cache Enable Bit.
> +	  Note that Global I/D ENABLE + Per Page DISABLE works but corollary
> +	  Global DISABLE + Per Page ENABLE won't work
> +
> +endif	#ARC_CACHE
> +
> +config ARC_HAS_HW_MPY
> +	bool "Use Hardware Multiplier (Normal or Faster XMAC)"
> +	default y
> +	help
> +	  Influences how gcc generates code for MPY operations.
> +	  If enabled, MPYxx insns are generated, provided by Standard/XMAC
> +	  Multipler. Otherwise software multipy lib is used
> +
> +choice
> +	prompt "ARC700 MMU Version"
> +	default ARC_MMU_V3 if ARC_CPU_770
> +	default ARC_MMU_V2 if ARC_CPU_750D
> +
> +config ARC_MMU_V1
> +	bool "MMU v1"
> +	help
> +	  Orig ARC700 MMU
> +
> +config ARC_MMU_V2
> +	bool "MMU v2"
> +	help
> +	  Fixed the deficiency of v1 - possible thrashing in memcpy sceanrio
> +	  when 2 D-TLB and 1 I-TLB entries index into same 2way set.
> +
> +config ARC_MMU_V3
> +	bool "MMU v3"
> +	depends on ARC_CPU_770
> +	help
> +	  Introduced with ARC700 4.10: New Features
> +	  Variable Page size (1k-16k), var JTLB size 128 x (2 or 4)
> +	  Shared Address Spaces (SASID)
> +
> +endchoice
> +
> +
> +choice
> +	prompt "MMU Page Size"
> +	default ARC_PAGE_SIZE_8K
> +
> +config ARC_PAGE_SIZE_8K
> +	bool "8KB"
> +	help
> +	  Choose between 8k vs 16k
> +
> +config ARC_PAGE_SIZE_16K
> +	bool "16KB"
> +	depends on ARC_MMU_V3
> +
> +config ARC_PAGE_SIZE_4K
> +	bool "4KB"
> +	depends on ARC_MMU_V3
> +
> +endchoice
> +
> +config ARC_FPU_SAVE_RESTORE
> +	bool "Enable FPU state persistence across context switch"
> +	default n
> +	help
> +	  Double Precision Floating Point unit had dedictaed regs which
> +	  need to be saved/restored across context-switch.
> +	  Note that ARC FPU is overly simplistic, unlike say x86, which has
> +	  hardware pieces to allow software to conditionally save/restore,
> +	  based on actual usage of FPU by a task. Thus our implemn does
> +	  this for all tasks in system.
> +
> +menuconfig ARC_CPU_REL_4_10
> +	bool "Enable support for Rel 4.10 features"
> +	default n
> +	help
> +	  -ARC770 (and dependent features) enabled
> +	  -ARC750 also shares some of the new features with 770
> +
> +config ARC_HAS_LLSC
> +	bool "Insn: LLOCK/SCOND (efficient atomic ops)"
> +	default y
> +	depends on ARC_CPU_770
> +	# if SMP, enable LLSC ONLY if ARC implementation has coherent atomics
> +	depends on !SMP || ARC_HAS_COH_LLSC
> +
> +config ARC_HAS_SWAPE
> +	bool "Insn: SWAPE (endian-swap)"
> +	default y
> +	depends on ARC_CPU_REL_4_10
> +
> +config ARC_HAS_RTSC
> +	bool "Insn: RTSC (64-bit r/o cycle counter)"
> +	default y
> +	depends on ARC_CPU_REL_4_10
> +
> +endmenu   # "ARC CPU Configuration"
> +
> +menu "Platform Board Configuration"
> +
> +source "arch/arc/plat-arcfpga/Kconfig"
> +
> +#New platform adds here
> +
> +config ARC_PLAT_CLK
> +	int "Clk speed in Hz"
> +	default "80000000"
> +
> +config LINUX_LINK_BASE
> +	hex "Linux Link Address"
> +	default "0x80000000"
> +	help
> +	  ARC700 divides the 32 bit phy address space into two equal halves
> +	  -Lower 2G (0 - 0x7FFF_FFFF ) is user virtual, translated by MMU
> +	  -Upper 2G (0x8000_0000 onwards) is untranslated, for kernel
> +	  Typically Linux kernel is linked at the start of untransalted addr,
> +	  hence the default value of 0x8zs.
> +	  However some customers have peripherals mapped at this addr, so
> +	  Linux needs to be scooted a bit.
> +	  If you don't know what the above means, leave this setting alone.
> +
> +config ARC_PLAT_SDRAM_SIZE
> +	hex "SD RAM Size"
> +	default "0x10000000"
> +	help
> +	  Implies the amount of SDRAM/DRAM Linux is going to claim/own.
> +	  The actual memory itself could be larger than this number. But for
> +	  all software purposes, this is the amt of memory.
> +
> +endmenu # "Platform Board Configuration"
> +
> +config ARC_STACK_NONEXEC
> +	bool "Make stack non-executable"
> +	default n
> +	help
> +	  To disable the execute permissions of stack/heap of processes
> +	  which are enabled by default.
> +
> +config HZ
> +	int "Timer Frequency"
> +	default 100
> +
> +menuconfig ARC_DBG
> +	bool "ARC debugging"
> +	default y
> +
> +config ARC_DBG_TLB_PARANOIA
> +	bool "Paranoia Checks in Low Level TLB Handlers"
> +	depends on ARC_DBG
> +	default n
> +
> +config ARC_DBG_TLB_MISS_COUNT
> +	bool "Profile TLB Misses"
> +	default n
> +	select DEBUG_FS
> +	depends on ARC_DBG
> +	help
> +	  Counts number of I and D TLB Misses and exports them via Debugfs
> +	  The counters can be cleared via Debugfs as well
> +
> +config CMDLINE
> +	string "Kernel command line to built-in"
> +	default "print-fatal-signals=1"
> +	help
> +	  The default command line which will be appended to the optional
> +	  u-boot provided command line (see below)
> +
> +config CMDLINE_UBOOT
> +	bool "Support U-boot kernel command line passing"
> +	default n
> +	help
> +	  If you are using U-boot (www.denx.de) and wish to pass the kernel
> +	  command line from the U-boot environment to the Linux kernel then
> +	  switch this option on.
> +	  ARC U-boot will setup the cmdline in RAM/flash and set r2 to point
> +	  to it. kernel startup code will copy the string into cmdline buffer
> +	  and also append CONFIG_CMDLINE.
> +
> +source "kernel/Kconfig.preempt"
> +
> +endmenu	 # "ARC Architecture Configuration"
> +
> +source "mm/Kconfig"
> +source "net/Kconfig"
> +source "drivers/Kconfig"
> +source "fs/Kconfig"
> +source "arch/arc/Kconfig.debug"
> +source "security/Kconfig"
> +source "crypto/Kconfig"
> +source "lib/Kconfig"
> diff --git a/arch/arc/Kconfig.debug b/arch/arc/Kconfig.debug
> new file mode 100644
> index 0000000..962c609
> --- /dev/null
> +++ b/arch/arc/Kconfig.debug
> @@ -0,0 +1,34 @@
> +menu "Kernel hacking"
> +
> +source "lib/Kconfig.debug"
> +
> +config EARLY_PRINTK
> +	bool "Early printk" if EMBEDDED
> +	default y
> +	help
> +	  Write kernel log output directly into the VGA buffer or to a serial
> +	  port.
> +
> +	  This is useful for kernel debugging when your machine crashes very
> +	  early before the console code is initialized. For normal operation
> +	  it is not recommended because it looks ugly and doesn't cooperate
> +	  with klogd/syslogd or the X server. You should normally N here,
> +	  unless you want to debug such a crash.
> +
> +config DEBUG_STACKOVERFLOW
> +	bool "Check for stack overflows"
> +	depends on DEBUG_KERNEL
> +	help
> +	  This option will cause messages to be printed if free stack space
> +	  drops below a certain limit.
> +
> +config 16KSTACKS
> +	bool "Use 16Kb for kernel stacks instead of 8Kb"
> +	help
> +	  If you say Y here the kernel will use a  16Kb stacksize for the
> +	  kernel stack attached to each process/thread. The default is 8K.
> +	  This increases the resident kernel footprint and will cause less
> +	  threads to run on the system and also increase the pressure
> +	  on the VM subsystem for higher order allocations.
> +
> +endmenu
> diff --git a/arch/arc/Makefile b/arch/arc/Makefile
> new file mode 100644
> index 0000000..4d52a3b
> --- /dev/null
> +++ b/arch/arc/Makefile
> @@ -0,0 +1,115 @@
> +#
> +# Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License version 2 as
> +# published by the Free Software Foundation.
> +#
> +
> +UTS_MACHINE := arc
> +
> +KBUILD_DEFCONFIG := fpga_defconfig
> +
> +# For ARC FPGA Platforms
> +platform-$(CONFIG_ARC_PLAT_FPGA_LEGACY)	:= arcfpga
> +#New platform adds here
> +
> +PLATFORM := $(platform-y)
> +export PLATFORM
> +
> +cflags-y	+= -Iarch/arc/plat-$(PLATFORM)/include
> +cflags-y	+= -mA7 -fno-common -pipe -fno-builtin -D__linux__
> +
> +atleast_gcc44 :=  $(call cc-ifversion, -gt, 0402, y)
> +cflags-$(atleast_gcc44)			+= -fsection-anchors
> +
> +cflags-$(CONFIG_ARC_HAS_LLSC)		+= -mlock
> +cflags-$(CONFIG_ARC_HAS_SWAPE)		+= -mswape
> +cflags-$(CONFIG_ARC_HAS_RTSC)		+= -mrtsc
> +cflags-$(CONFIG_ARC_DW2_UNWIND)		+= -fasynchronous-unwind-tables
> +
> +ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE
> +# Generic build system uses -O2, we want -O3
> +cflags-y  += -O3
> +endif
> +
> +# small data is default for elf32 tool-chain. If not usable, disable it
> +# This also allows repurposing GP as scratch reg to gcc reg allocator
> +disable_small_data := y
> +cflags-$(disable_small_data)		+= -mno-sdata -fcall-used-gp
> +
> +cflags-$(CONFIG_CPU_BIG_ENDIAN)		+= -mbig-endian
> +ldflags-$(CONFIG_CPU_BIG_ENDIAN)	+= -EB
> +
> +# STAR 9000518362:
> +# arc-linux-uclibc-ld (buildroot) or arceb-elf32-ld (EZChip) don't accept
> +# --build-id w/o "-marclinux".
> +# Default arc-elf32-ld is OK
> +ldflags-y				+= -marclinux
> +
> +ARC_LIBGCC				:= -mA7
> +cflags-$(CONFIG_ARC_HAS_HW_MPY)		+= -multcost=16
> +
> +ifndef CONFIG_ARC_HAS_HW_MPY
> +	cflags-y	+= -mno-mpy
> +
> +# newlib for ARC700 assumes MPY to be always present, which is generally true
> +# However, if someone really doesn't want MPY, we need to use the 600 ver
> +# which coupled with -mno-mpy will use mpy emulation
> +# With gcc 4.4.7, -mno-mpy is enough to make any other related adjustments,
> +# e.g. increased cost of MPY. With gcc 4.2.1 this had to be explicitly hinted
> +
> +	ARC_LIBGCC		:= -marc600
> +	ifneq ($(atleast_gcc44),y)
> +		cflags-y	+= -multcost=30
> +	endif
> +endif
> +
> +LIBGCC	:= $(shell $(CC) $(ARC_LIBGCC) $(cflags-y) --print-libgcc-file-name)
> +
> +# Modules with short calls might break for calls into builtin-kernel
> +KBUILD_CFLAGS_MODULE	+= -mlong-calls
> +
> +# Finally dump eveything into kernel build system
> +KBUILD_CFLAGS	+= $(cflags-y)
> +KBUILD_AFLAGS	+= $(KBUILD_CFLAGS)
> +LDFLAGS		+= $(ldflags-y)
> +
> +# Needed for Linker script preprocessing
> +KBUILD_CPPFLAGS	+= -Iarch/arc/plat-$(PLATFORM)/include
> +
> +head-y		:= arch/arc/kernel/head.o
> +
> +# See arch/arc/Kbuild for content of core part of the kernel
> +core-y		+= arch/arc/
> +
> +# w/o this ifneq, make ARCH=arc clean was crapping out
> +ifneq ($(platform-y),)
> +core-y		+= arch/arc/plat-$(PLATFORM)/
> +endif
> +
> +libs-y		+= arch/arc/lib/ $(LIBGCC)
> +
> +#default target for make without any arguements.
> +KBUILD_IMAGE := bootpImage
> +
> +all:	$(KBUILD_IMAGE)
> +boot	:= arch/arc/boot
> +
> +bootpImage: vmlinux
> +
> +uImage: vmlinux
> +	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
> +
> +archclean:
> +	$(Q)$(MAKE) $(clean)=$(boot)
> +
> +# Hacks to enable final link due to absence of link-time branch relexation
> +# and gcc choosing optimal(shorter) branches at -O3
> +#
> +# vineetg Feb 2010: -mlong-calls switched off for overall kernel build
> +# However lib/decompress_inflate.o (.init.text) calls
> +# zlib_inflate_workspacesize (.text) causing relocation errors.
> +# Thus forcing all exten calls in this file to be long calls
> +export CFLAGS_decompress_inflate.o = -mmedium-calls
> +export CFLAGS_initramfs.o = -mmedium-calls
> diff --git a/arch/arc/boot/Makefile b/arch/arc/boot/Makefile
> new file mode 100644
> index 0000000..7d514c2
> --- /dev/null
> +++ b/arch/arc/boot/Makefile
> @@ -0,0 +1,26 @@
> +targets := vmlinux.bin vmlinux.bin.gz uImage
> +
> +# uImage build relies on mkimage being availble on your host for ARC target
> +# You will need to build u-boot for ARC, rename mkimage to arc-elf32-mkimage
> +# and make sure it's reacable from your PATH
> +MKIMAGE := $(srctree)/scripts/mkuboot.sh
> +
> +OBJCOPYFLAGS= -O binary -R .note -R .note.gnu.build-id -R .comment -S
> +
> +LINUX_START_TEXT = $$(readelf -h vmlinux | \
> +			grep "Entry point address" | grep -o 0x.*)
> +
> +UIMAGE_LOADADDR    = $(CONFIG_LINUX_LINK_BASE)
> +UIMAGE_ENTRYADDR   = $(LINUX_START_TEXT)
> +UIMAGE_COMPRESSION = gzip
> +
> +$(obj)/vmlinux.bin: vmlinux FORCE
> +	$(call if_changed,objcopy)
> +
> +$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE
> +	$(call if_changed,gzip)
> +
> +$(obj)/uImage: $(obj)/vmlinux.bin.gz FORCE
> +	$(call if_changed,uimage)
> +
> +PHONY += FORCE
> diff --git a/arch/arc/include/asm/Kbuild b/arch/arc/include/asm/Kbuild
> index a90a3c6..105ec11 100644
> --- a/arch/arc/include/asm/Kbuild
> +++ b/arch/arc/include/asm/Kbuild
> @@ -33,6 +33,7 @@ generic-y += mman.h
>  generic-y += msgbuf.h
>  generic-y += param.h
>  generic-y += parport.h
> +generic-y += pci.h
>  generic-y += percpu.h
>  generic-y += poll.h
>  generic-y += posix_types.h
> diff --git a/arch/arc/kernel/Makefile b/arch/arc/kernel/Makefile
> new file mode 100644
> index 0000000..6d83431
> --- /dev/null
> +++ b/arch/arc/kernel/Makefile
> @@ -0,0 +1,16 @@
> +#
> +# Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License version 2 as
> +# published by the Free Software Foundation.
> +
> +obj-y	:= arcksyms.o setup.o irq.o time.o reset.o ptrace.o entry.o process.o
> +obj-y	+= signal.o traps.o sys.o troubleshoot.o stacktrace.o clk.o
> +
> +obj-$(CONFIG_ARC_FPU_SAVE_RESTORE)	+= fpu.o
> +CFLAGS_fpu.o   += -mdpfp
> +
> +obj-y += ctx_sw_asm.o
> +
> +extra-y := vmlinux.lds head.o
> diff --git a/arch/arc/kernel/arcksyms.c b/arch/arc/kernel/arcksyms.c
> new file mode 100644
> index 0000000..4d9e777
> --- /dev/null
> +++ b/arch/arc/kernel/arcksyms.c
> @@ -0,0 +1,56 @@
> +/*
> + * arcksyms.c - Exporting symbols not exportable from their own sources
> + *
> + * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + */
> +
> +#include <linux/module.h>
> +
> +/* libgcc functions, not part of kernel sources */
> +extern void __ashldi3(void);
> +extern void __ashrdi3(void);
> +extern void __divsi3(void);
> +extern void __divsf3(void);
> +extern void __lshrdi3(void);
> +extern void __modsi3(void);
> +extern void __muldi3(void);
> +extern void __ucmpdi2(void);
> +extern void __udivsi3(void);
> +extern void __umodsi3(void);
> +extern void __cmpdi2(void);
> +extern void __fixunsdfsi(void);
> +extern void __muldf3(void);
> +extern void __divdf3(void);
> +extern void __floatunsidf(void);
> +extern void __floatunsisf(void);
> +
> +EXPORT_SYMBOL(__ashldi3);
> +EXPORT_SYMBOL(__ashrdi3);
> +EXPORT_SYMBOL(__divsi3);
> +EXPORT_SYMBOL(__divsf3);
> +EXPORT_SYMBOL(__lshrdi3);
> +EXPORT_SYMBOL(__modsi3);
> +EXPORT_SYMBOL(__muldi3);
> +EXPORT_SYMBOL(__ucmpdi2);
> +EXPORT_SYMBOL(__udivsi3);
> +EXPORT_SYMBOL(__umodsi3);
> +EXPORT_SYMBOL(__cmpdi2);
> +EXPORT_SYMBOL(__fixunsdfsi);
> +EXPORT_SYMBOL(__muldf3);
> +EXPORT_SYMBOL(__divdf3);
> +EXPORT_SYMBOL(__floatunsidf);
> +EXPORT_SYMBOL(__floatunsisf);
> +
> +/* ARC optimised assembler routines */
> +EXPORT_SYMBOL(memset);
> +EXPORT_SYMBOL(memcpy);
> +EXPORT_SYMBOL(memcmp);
> +EXPORT_SYMBOL(strchr);
> +EXPORT_SYMBOL(strcpy);
> +EXPORT_SYMBOL(strcmp);
> +EXPORT_SYMBOL(strlen);
> diff --git a/arch/arc/kernel/asm-offsets.c b/arch/arc/kernel/asm-offsets.c
> new file mode 100644
> index 0000000..7f3f611
> --- /dev/null
> +++ b/arch/arc/kernel/asm-offsets.c
> @@ -0,0 +1,46 @@
> +/*
> + * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +#include <linux/sched.h>
> +#include <linux/mm.h>
> +#include <linux/interrupt.h>
> +#include <asm/hardirq.h>
> +#include <linux/thread_info.h>
> +#include <asm/page.h>
> +#include <linux/kbuild.h>
> +
> +int main(void)
> +{
> +	DEFINE(TASK_THREAD, offsetof(struct task_struct, thread));
> +	DEFINE(TASK_THREAD_INFO, offsetof(struct task_struct, stack));
> +
> +	BLANK();
> +
> +	DEFINE(THREAD_KSP, offsetof(struct thread_struct, ksp));
> +	DEFINE(THREAD_CALLEE_REG, offsetof(struct thread_struct, callee_reg));
> +	DEFINE(THREAD_FAULT_ADDR,
> +	       offsetof(struct thread_struct, fault_address));
> +
> +	BLANK();
> +
> +	DEFINE(THREAD_INFO_FLAGS, offsetof(struct thread_info, flags));
> +	DEFINE(THREAD_INFO_PREEMPT_COUNT,
> +	       offsetof(struct thread_info, preempt_count));
> +
> +	BLANK();
> +
> +	DEFINE(TASK_ACT_MM, offsetof(struct task_struct, active_mm));
> +	DEFINE(TASK_TGID, offsetof(struct task_struct, tgid));
> +
> +	DEFINE(MM_CTXT, offsetof(struct mm_struct, context));
> +	DEFINE(MM_PGD, offsetof(struct mm_struct, pgd));
> +
> +	DEFINE(MM_CTXT_ASID, offsetof(mm_context_t, asid));
> +
> +	return 0;
> +}
> diff --git a/arch/arc/kernel/vmlinux.lds.S b/arch/arc/kernel/vmlinux.lds.S
> new file mode 100644
> index 0000000..8c72bc3
> --- /dev/null
> +++ b/arch/arc/kernel/vmlinux.lds.S
> @@ -0,0 +1,116 @@
> +/*
> + * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +#include <asm-generic/vmlinux.lds.h>
> +#include <asm/cache.h>
> +#include <asm/page.h>
> +#include <asm/thread_info.h>
> +#include <plat/memmap.h>
> +
> +OUTPUT_ARCH(arc)
> +ENTRY(_stext)
> +
> +#ifdef CONFIG_CPU_BIG_ENDIAN
> +jiffies = jiffies_64 + 4;
> +#else
> +jiffies = jiffies_64;
> +#endif
> +
> +SECTIONS
> +{
> +	. = CONFIG_LINUX_LINK_BASE;
> +
> +	_int_vec_base_lds = .;
> +	.vector : {
> +		*(.vector)
> +		. = ALIGN(PAGE_SIZE);
> +	}
> +
> +	/*
> +	 * The reason for having a seperate subsection .init.ramfs is to
> +	 * prevent objump from including it in kernel dumps
> +	 *
> +	 * Reason for having .init.ramfs above .init is to make sure that the
> +	 * binary blob is tucked away to one side, reducing the displacement
> +	 * between .init.text and .text, avoiding any possible relocation
> +	 * errors because of calls from .init.text to .text
> +	 * Yes such calls do exist. e.g.
> +	 *	decompress_inflate.c:gunzip( ) -> zlib_inflate_workspace( )
> +	 */
> +
> +	__init_begin = .;
> +
> +	.init.ramfs : { INIT_RAM_FS }
> +
> +	. = ALIGN(PAGE_SIZE);
> +	_stext = .;
> +
> +	HEAD_TEXT_SECTION
> +	INIT_TEXT_SECTION(L1_CACHE_BYTES)
> +
> +	/* INIT_DATA_SECTION open-coded: special INIT_RAM_FS handling */
> +	.init.data : {
> +		INIT_DATA
> +		INIT_SETUP(L1_CACHE_BYTES)
> +		INIT_CALLS
> +		CON_INITCALL
> +		SECURITY_INITCALL
> +	}
> +
> +	PERCPU_SECTION(L1_CACHE_BYTES)
> +
> +	/*
> +	 * .exit.text is discard at runtime, not link time, to deal with
> +	 * references from .debug_frame
> +	 * It will be init freed, being inside [__init_start : __init_end]
> +	 */
> +	.exit.text : { EXIT_TEXT }
> +	.exit.data : { EXIT_DATA }
> +
> +	. = ALIGN(PAGE_SIZE);
> +	__init_end = .;
> +
> +	.text : {
> +		_text = .;
> +		TEXT_TEXT
> +		SCHED_TEXT
> +		LOCK_TEXT
> +		KPROBES_TEXT
> +		*(.fixup)
> +		*(.gnu.warning)
> +	}
> +	EXCEPTION_TABLE(L1_CACHE_BYTES)
> +	_etext = .;
> +
> +	_sdata = .;
> +	RO_DATA_SECTION(PAGE_SIZE)
> +
> +	/*
> +	 * 1. this is .data essentially
> +	 * 2. THREAD_SIZE for init.task, must be kernel-stk sz aligned
> +	 */
> +	RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
> +
> +	_edata = .;
> +
> +	BSS_SECTION(0, 0, 0)
> +
> +	NOTES
> +
> +	. = ALIGN(PAGE_SIZE);
> +	_end = . ;
> +
> +	STABS_DEBUG
> +	DWARF_DEBUG
> +	DISCARDS
> +
> +	.arcextmap 0 : {
> +		*(.gnu.linkonce.arcextmap.*)
> +		*(.arcextmap.*)
> +	}
> +}
> diff --git a/arch/arc/lib/Makefile b/arch/arc/lib/Makefile
> new file mode 100644
> index 0000000..db46e20
> --- /dev/null
> +++ b/arch/arc/lib/Makefile
> @@ -0,0 +1,9 @@
> +#
> +# Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License version 2 as
> +# published by the Free Software Foundation.
> +
> +lib-y	:= strchr-700.o strcmp.o strcpy-700.o strlen.o
> +lib-y	+= memcmp.o memcpy-700.o memset.o
> diff --git a/arch/arc/mm/Makefile b/arch/arc/mm/Makefile
> new file mode 100644
> index 0000000..168dc14
> --- /dev/null
> +++ b/arch/arc/mm/Makefile
> @@ -0,0 +1,10 @@
> +#
> +# Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License version 2 as
> +# published by the Free Software Foundation.
> +#
> +
> +obj-y	:= extable.o ioremap.o dma.o fault.o init.o
> +obj-y	+= tlb.o tlbex.o cache_arc700.o
> diff --git a/arch/arc/plat-arcfpga/Kconfig b/arch/arc/plat-arcfpga/Kconfig
> new file mode 100644
> index 0000000..7af3a4e
> --- /dev/null
> +++ b/arch/arc/plat-arcfpga/Kconfig
> @@ -0,0 +1,33 @@
> +#
> +# Copyright (C) 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License version 2 as
> +# published by the Free Software Foundation.
> +#
> +
> +if ARC_PLAT_FPGA_LEGACY
> +
> +choice
> +	prompt "FPGA Board"
> +
> +config ARC_BOARD_ANGEL4
> +	bool "ARC Angel4"
> +	help
> +	  ARC Angel4 FPGA Ref Platform (Xilinx Virtex Based)
> +
> +config ARC_BOARD_ML509
> +	bool "ML509"
> +	help
> +	  ARC ML509 FPGA Ref Platform (Xilinx Virtex-5 Based)
> +
> +endchoice
> +
> +config ARC_SERIAL_BAUD
> +	int "UART Baud rate"
> +	default "115200"
> +	depends on SERIAL_ARC || SERIAL_ARC_CONSOLE
> +	help
> +	  Baud rate for the ARC UART
> +
> +endif
> diff --git a/arch/arc/plat-arcfpga/Makefile b/arch/arc/plat-arcfpga/Makefile
> new file mode 100644
> index 0000000..385eb9d
> --- /dev/null
> +++ b/arch/arc/plat-arcfpga/Makefile
> @@ -0,0 +1,9 @@
> +#
> +# Copyright (C) 2011-2012 Synopsys, Inc. (www.synopsys.com)
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License version 2 as
> +# published by the Free Software Foundation.
> +#
> +
> +obj-y := platform.o irq.o
> 

If this patch looks OK - can you please respond with an ACK. If not, please let me
know what, if any, needs fixing/reworking.

Thx,
-Vineet

  reply	other threads:[~2013-01-28  6:30 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-24 10:50 [PATCH v3 00/71] Synopsys ARC Linux kernel Port (Part #1) Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 01/71] ARC: Generic Headers Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 02/71] ARC: Build system: Makefiles, Kconfig, Linker script Vineet Gupta
2013-01-28  6:29   ` Vineet Gupta [this message]
2013-01-28 18:44     ` Sam Ravnborg
2013-01-29 13:45       ` Vineet Gupta
2013-01-29 17:52         ` Sam Ravnborg
2013-02-11 11:29   ` James Hogan
2013-02-11 11:44     ` Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 06/71] ARC: uaccess friends Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 11/71] ARC: Fundamental ARCH data-types/defines Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 17/71] ARC: Syscall support (no-legacy-syscall ABI) Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 18/71] ARC: Process-creation/scheduling/idle-loop Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 19/71] ARC: Timers/counters/delay management Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 20/71] ARC: Signal handling Vineet Gupta
2013-02-11  7:26   ` pt_regs leak into userspace (was Re: [PATCH v3 20/71] ARC: Signal handling) Vineet Gupta
2013-02-11  9:36     ` Jonas Bonn
2013-02-11 10:13       ` Vineet Gupta
2013-02-11 10:28         ` James Hogan
2013-02-11 10:53           ` Jonas Bonn
2013-02-11 10:57             ` James Hogan
2013-02-11 11:01             ` James Hogan
2013-02-11 11:22             ` Vineet Gupta
2013-02-11 12:12               ` Jonas Bonn
2013-02-11 12:37                 ` Vineet Gupta
2013-02-11 13:02                   ` Jonas Bonn
2013-02-11 13:08                     ` Vineet Gupta
2013-02-11 10:30         ` Jonas Bonn
2013-02-11 14:07           ` Al Viro
2013-02-15  7:23             ` Jonas Bonn
2013-02-15  7:35               ` Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 21/71] ARC: [Review] Preparing to fix incorrect syscall restarts due to signals Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 22/71] ARC: [Review] Prevent incorrect syscall restarts Vineet Gupta
2013-01-28  7:42   ` Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 23/71] ARC: Cache Flush Management Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 29/71] ARC: I/O and DMA Mappings Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 30/71] ARC: Boot #1: low-level, setup_arch(), /proc/cpuinfo, mem init Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 32/71] ARC: [DeviceTree] Basic support Vineet Gupta
2013-01-28  7:40   ` Vineet Gupta
2013-01-28 10:21   ` James Hogan
2013-01-29  9:53     ` Vineet Gupta
2013-01-29 10:06       ` James Hogan
2013-01-29 13:25   ` Rob Herring
2013-01-29 13:39     ` Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 33/71] ARC: [DeviceTree] Convert some Kconfig items to runtime values Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 34/71] ARC: [plat-arcfpga]: Enabling DeviceTree for Angel4 board Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 42/71] ARC: Module support Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 44/71] ARC: SMP support Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 48/71] ARC: kprobes support Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 57/71] ARC: Hostlink Pseudo-Driver for Metaware Debugger Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 58/71] ARC: UAPI Disintegrate arch/arc/include/asm Vineet Gupta
2013-01-28  7:36   ` Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 59/71] ARC: Add support for ioremap_prot API Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 62/71] ARC: [Review] Multi-platform image #2: Board callback Infrastructure Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 69/71] ARC: [plat-arcfpga] defconfig for fully loaded ARC Linux Vineet Gupta
2013-01-24 10:50 ` [PATCH v3 70/71] ARC: Provide a default serial.h for uart drivers needing BASE_BAUD Vineet Gupta
2013-01-24 11:01 ` [PATCH v3 45/71] ARC: DWARF2 .debug_frame based stack unwinder Vineet Gupta

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=51061AD0.4020200@synopsys.com \
    --to=vineet.gupta1@synopsys.com \
    --cc=arnd@arndb.de \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sam@ravnborg.org \
    /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).