Hi Linus,
I'm pleased to send this pull request which among others contains Linux port to
HS38x cores based on new ARCv2 ISA from Synopsys.
We've been working on this for more than a year now and it feels good to hand it
over now.
Some of the patches have been reviewed by experts: Peter and Will commented on the
barriers stuff and were reworked to same effect.
P.S. There's trivial merge conflict in include/asm-generic/barrier.h (patch has
been Acked by Peter already)
Please Pull !
Thx,
-Vineet
------------------->
The following changes since commit e26081808edadfd257c6c9d81014e3b25e9a6118:
Linux 4.1-rc4 (2015-05-18 10:13:47 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc.git/ tags/arc-4.2-rc1
for you to fetch changes up to 40b8ad8f762cae4c44852ee1736ba766f52d5cc3:
ARC: Fix build failures for ARCompact in linux-next after ARCv2 support
(2015-06-28 20:30:13 +0530)
----------------------------------------------------------------
- Support for HS38 cores based on ARCv2 ISA
ARCv2 is the next generation ISA from Synopsys and basis for the
HS3{4,6,8} families of processors which retain the traditional ARC mantra of
low power and configurability and are now more performant and feature rich.
HS38x is a 10 stage pipeline core which supports MMU (with huge pages) and
SMP (upto 4 cores) among other features.
+ http://www.synopsys.com/dw/ipdir.php?ds=arc-hs38-processor
+
http://news.synopsys.com/2014-10-14-New-DesignWare-ARC-HS38-Processor-Doubles-Performance-for-Embedded-Linux-Applications
+
http://www.embedded.com/electronics-news/4435975/Synopsys-ARC-HS38-core-gives-2X-boost-to-Linux-based-apps
- Support for ARC SDP (Software Development platform): Main Board + CPU Cards
= AXS101: CPU Card with ARC700 in silicon @ 700 MHz
= AXS103: CPU Card with HS38x in FPGA
- Refactoring of ARCompact port to accomodate new ARCv2 ISA
- Miscll updates/cleanups
----------------------------------------------------------------
Alexey Brodkin (3):
ARC: [axs101] Add support for AXS101 SDP (software development platform)
ARC: [axs101] STAR 9000799830: Fix SD cards support
ARC: [axs101] Prepare for AXS103
Claudiu Zissulescu (1):
ARCv2: optimised string/mem lib routines
Max Filippov (1):
arc: fix use of uninitialized arc_pmu
Ruud Derwig (1):
ARCv2: [vdk] dts files and defconfig for HS38 VDK
Tobias Klauser (1):
ARC: perf: Remove unnecessary local variable
Vineet Gupta (65):
ARC: fix warning in sched due to thread_saved_pc()
ARC: fold ___flush_dcache_page into __flush_dcache_page
ARC: switch to simpler CROSS_COMPILE prefix
ARC: remove the unused platform helpers from dma mapping API
ARC: [kbuild] Retire CONFIG_ARC_CPU_REL_4_10
ARC: RIP broken 64bit RTSC
ARC: clocksource cleanups
ARC: compress cpuinfo_arc_mmu (mainly save page size in KB)
ARC: [arcfpga] RIP legacy ISS based SMP extension
ARC: [plat_arcfpga]->[plat_sim]
ARC: explicit'ify uboot support
ARC: fix section mismatch with allyesconfig
ARC: stack unwinder to bail if PC is not kernel mode
ARC: mm: document system mem map clearly
ARC: [axs101] support early 8250 uart
ARC: [axs101] Tweak DDR port aperture mappings for performance
ARC: [axs101] Add missing __init annotations
ARC: mm/cache_arc700.c -> mm/cache.c
ARC: cacheflush: move some code around, delete old comments
ARC: cacheflush: No need to retain DC_CTRL from __before_dc_op()
ARC: untangle cache flush loop
ARC: entry.S: common'ize scrtach reg freeup in intr + exceptions
ARC: entry.S: Introduce INTERRUPT_{PROLOGUE,EPILOGUE}
ARC: entry.S: canonical'ize EXCEPTION_{PROLOGUE,EPILOGUE}
ARC: entry.S: confine EXCEPTION_* macros to one file
ARC: entry.S: FAKE_RET_FROM_EXCPN can always use r9
ARC: entry.S: Trap handler to use r10 for syscall vs. brkpt decision
ARC: entry.S: comments cleanup
ARC: entry.S: Ensure that restore_regs is local to compilation unit
ARC: entry.S: split into ARCompact ISA specific, common bits
ARC: entry.S: move some code around for cache locality in return path
ARC: entry.S: micro-optimize Trap handler
ARC: entry.S: use single EXCEPTION_PROLOGUE
ARC: entry.S: [arcompact] simplify SWITCH_TO_KERNEL_STK
ARC: Make way for pt_regs != user_regs_struct
ARC: intc: split into ARCompact ISA specific, common bits
ARC: uncached base is hard constant for ARC, don't save it
ARCv2: [intc] HS38 core interrupt controller
ARCv2: Support for ARCv2 ISA and HS38x cores
ARCv2: STAR 9000793984: Handle return from intr to Delay Slot
ARCv2: STAR 9000808988: signals involving Delay Slot
ARCv2: STAR 9000814690: Really Re-enable interrupts to avoid deadlocks
ARCv2: MMUv4: TLB programming Model changes
ARCv2: MMUv4: cache programming model changes
ARCv2: MMUv4: support aliasing icache config
ARCv2: Adhere to Zero Delay loop restriction
ARCv2: extable: Enable sorting at build time
ARCv2: clocksource: Introduce 64bit local RTC counter
ARC: make plat_smp_ops weak to allow over-rides
ARCv2: SMP: Support ARConnect (MCIP) for Inter-Core-Interrupts et al
ARCv2: SMP: ARConnect debug/robustness
ARCv2: SMP: clocksource: Enable Global Real Time counter
ARCv2: SMP: intc: IDU 2nd level intc for dynamic IRQ distribution
ARC: add compiler barrier to LLSC based cmpxchg
ARC: add smp barriers around atomics per Documentation/atomic_ops.txt
arch: conditionally define smp_{mb,rmb,wmb}
ARCv2: barriers
ARC: Reduce bitops lines of code using macros
ARCv2: STAR 9000837815 workaround hardware exclusive transactions livelock
ARCv2: SLC: Handle explcit flush for DMA ops (w/o IO-coherency)
ARCv2: All bits in place, allow ARCv2 builds
ARCv2: [nsim*hs*] Support simulation platforms for HS38x cores
ARCv2: [axs103] Support ARC SDP FPGA platform for HS38x cores
ARCv2: Allow older gcc to cope with new regime of ARCv2/ARCompact support
ARC: Fix build failures for ARCompact in linux-next after ARCv2 support
.../devicetree/bindings/arc/archs-idu-intc.txt | 46 ++
.../devicetree/bindings/arc/archs-intc.txt | 22 +
Documentation/devicetree/bindings/arc/axs101.txt | 7 +
Documentation/devicetree/bindings/arc/axs103.txt | 8 +
MAINTAINERS | 7 +
arch/arc/Kconfig | 159 ++++--
arch/arc/Makefile | 17 +-
arch/arc/boot/dts/Makefile | 2 +-
arch/arc/boot/dts/axc001.dtsi | 100 ++++
arch/arc/boot/dts/axc003.dtsi | 102 ++++
arch/arc/boot/dts/axc003_idu.dtsi | 126 +++++
arch/arc/boot/dts/axs101.dts | 21 +
arch/arc/boot/dts/axs103.dts | 24 +
arch/arc/boot/dts/axs103_idu.dts | 24 +
arch/arc/boot/dts/axs10x_mb.dtsi | 224 +++++++++
arch/arc/boot/dts/{angel4.dts => nsim_700.dts} | 2 +-
arch/arc/boot/dts/nsim_hs.dts | 53 ++
arch/arc/boot/dts/nsim_hs_idu.dts | 72 +++
arch/arc/boot/dts/nsimosci_hs.dts | 80 +++
arch/arc/boot/dts/nsimosci_hs_idu.dts | 101 ++++
arch/arc/boot/dts/vdk_axc003.dtsi | 61 +++
arch/arc/boot/dts/vdk_axc003_idu.dtsi | 76 +++
arch/arc/boot/dts/vdk_axs10x_mb.dtsi | 93 ++++
arch/arc/boot/dts/vdk_hs38.dts | 21 +
arch/arc/boot/dts/vdk_hs38_smp.dts | 21 +
arch/arc/configs/axs101_defconfig | 111 +++++
arch/arc/configs/axs103_defconfig | 117 +++++
arch/arc/configs/axs103_smp_defconfig | 118 +++++
arch/arc/configs/nsim_700_defconfig | 7 +-
arch/arc/configs/nsim_hs_defconfig | 64 +++
arch/arc/configs/nsim_hs_smp_defconfig | 63 +++
arch/arc/configs/nsimosci_defconfig | 5 +-
arch/arc/configs/nsimosci_hs_defconfig | 73 +++
arch/arc/configs/nsimosci_hs_smp_defconfig | 93 ++++
arch/arc/configs/tb10x_defconfig | 3 +-
arch/arc/configs/vdk_hs38_defconfig | 102 ++++
arch/arc/configs/vdk_hs38_smp_defconfig | 104 ++++
arch/arc/include/asm/Kbuild | 1 -
arch/arc/include/asm/arcregs.h | 66 ++-
arch/arc/include/asm/atomic.h | 35 +-
arch/arc/include/asm/barrier.h | 48 ++
arch/arc/include/asm/bitops.h | 529 ++++++++------------
arch/arc/include/asm/cache.h | 18 +-
arch/arc/include/asm/cacheflush.h | 4 +-
arch/arc/include/asm/cmpxchg.h | 26 +-
arch/arc/include/asm/delay.h | 9 +-
arch/arc/include/asm/dma-mapping.h | 31 +-
arch/arc/include/asm/elf.h | 5 +
arch/arc/include/asm/entry-arcv2.h | 190 +++++++
arch/arc/include/asm/entry-compact.h | 307 ++++++++++++
arch/arc/include/asm/entry.h | 378 +-------------
arch/arc/include/asm/io.h | 42 +-
arch/arc/include/asm/irq.h | 6 +
arch/arc/include/asm/irqflags-arcv2.h | 124 +++++
arch/arc/include/asm/irqflags-compact.h | 183 +++++++
arch/arc/include/asm/irqflags.h | 168 +------
arch/arc/include/asm/mcip.h | 94 ++++
arch/arc/include/asm/mmu.h | 24 +-
arch/arc/include/asm/pgtable.h | 10 +
arch/arc/include/asm/processor.h | 37 +-
arch/arc/include/asm/ptrace.h | 43 ++
arch/arc/include/asm/spinlock.h | 32 ++
arch/arc/include/asm/thread_info.h | 1 +
arch/arc/include/asm/uaccess.h | 17 +-
arch/arc/include/uapi/asm/page.h | 2 +-
arch/arc/kernel/Makefile | 6 +-
arch/arc/kernel/asm-offsets.c | 5 +
arch/arc/kernel/devtree.c | 2 +
arch/arc/kernel/entry-arcv2.S | 239 +++++++++
arch/arc/kernel/entry-compact.S | 393 +++++++++++++++
arch/arc/kernel/entry.S | 527 +++-----------------
arch/arc/kernel/head.S | 4 +-
arch/arc/kernel/intc-arcv2.c | 143 ++++++
arch/arc/kernel/intc-compact.c | 226 +++++++++
arch/arc/kernel/irq.c | 210 --------
arch/arc/kernel/mcip.c | 341 +++++++++++++
arch/arc/kernel/perf_event.c | 7 +-
arch/arc/kernel/process.c | 14 +-
arch/arc/kernel/ptrace.c | 92 +++-
arch/arc/kernel/setup.c | 63 ++-
arch/arc/kernel/signal.c | 62 ++-
arch/arc/kernel/smp.c | 24 +-
arch/arc/kernel/stacktrace.c | 18 +-
arch/arc/kernel/time.c | 88 +++-
arch/arc/kernel/troubleshoot.c | 33 +-
arch/arc/lib/Makefile | 6 +-
arch/arc/lib/memcmp.S | 30 +-
arch/arc/lib/memcpy-archs.S | 236 +++++++++
arch/arc/lib/memset-archs.S | 93 ++++
arch/arc/lib/strcmp-archs.S | 78 +++
arch/arc/mm/Makefile | 2 +-
arch/arc/mm/{cache_arc700.c => cache.c} | 552 +++++++++++++--------
arch/arc/mm/dma.c | 24 +-
arch/arc/mm/tlb.c | 60 ++-
arch/arc/mm/tlbex.S | 44 +-
arch/arc/plat-arcfpga/Kconfig | 33 --
arch/arc/plat-arcfpga/include/plat/smp.h | 118 -----
arch/arc/plat-arcfpga/smp.c | 186 -------
arch/arc/plat-axs10x/Kconfig | 46 ++
arch/arc/plat-axs10x/Makefile | 9 +
arch/arc/plat-axs10x/axs10x.c | 484 ++++++++++++++++++
arch/arc/plat-sim/Kconfig | 14 +
arch/arc/{plat-arcfpga => plat-sim}/Makefile | 3 -
arch/arc/{plat-arcfpga => plat-sim}/platform.c | 24 +-
include/asm-generic/barrier.h | 25 +
scripts/sortextable.c | 5 +
106 files changed, 6996 insertions(+), 2332 deletions(-)
create mode 100644 Documentation/devicetree/bindings/arc/archs-idu-intc.txt
create mode 100644 Documentation/devicetree/bindings/arc/archs-intc.txt
create mode 100644 Documentation/devicetree/bindings/arc/axs101.txt
create mode 100644 Documentation/devicetree/bindings/arc/axs103.txt
create mode 100644 arch/arc/boot/dts/axc001.dtsi
create mode 100644 arch/arc/boot/dts/axc003.dtsi
create mode 100644 arch/arc/boot/dts/axc003_idu.dtsi
create mode 100644 arch/arc/boot/dts/axs101.dts
create mode 100644 arch/arc/boot/dts/axs103.dts
create mode 100644 arch/arc/boot/dts/axs103_idu.dts
create mode 100644 arch/arc/boot/dts/axs10x_mb.dtsi
rename arch/arc/boot/dts/{angel4.dts => nsim_700.dts} (97%)
create mode 100644 arch/arc/boot/dts/nsim_hs.dts
create mode 100644 arch/arc/boot/dts/nsim_hs_idu.dts
create mode 100644 arch/arc/boot/dts/nsimosci_hs.dts
create mode 100644 arch/arc/boot/dts/nsimosci_hs_idu.dts
create mode 100644 arch/arc/boot/dts/vdk_axc003.dtsi
create mode 100644 arch/arc/boot/dts/vdk_axc003_idu.dtsi
create mode 100644 arch/arc/boot/dts/vdk_axs10x_mb.dtsi
create mode 100644 arch/arc/boot/dts/vdk_hs38.dts
create mode 100644 arch/arc/boot/dts/vdk_hs38_smp.dts
create mode 100644 arch/arc/configs/axs101_defconfig
create mode 100644 arch/arc/configs/axs103_defconfig
create mode 100644 arch/arc/configs/axs103_smp_defconfig
create mode 100644 arch/arc/configs/nsim_hs_defconfig
create mode 100644 arch/arc/configs/nsim_hs_smp_defconfig
create mode 100644 arch/arc/configs/nsimosci_hs_defconfig
create mode 100644 arch/arc/configs/nsimosci_hs_smp_defconfig
create mode 100644 arch/arc/configs/vdk_hs38_defconfig
create mode 100644 arch/arc/configs/vdk_hs38_smp_defconfig
create mode 100644 arch/arc/include/asm/barrier.h
create mode 100644 arch/arc/include/asm/entry-arcv2.h
create mode 100644 arch/arc/include/asm/entry-compact.h
create mode 100644 arch/arc/include/asm/irqflags-arcv2.h
create mode 100644 arch/arc/include/asm/irqflags-compact.h
create mode 100644 arch/arc/include/asm/mcip.h
create mode 100644 arch/arc/kernel/entry-arcv2.S
create mode 100644 arch/arc/kernel/entry-compact.S
create mode 100644 arch/arc/kernel/intc-arcv2.c
create mode 100644 arch/arc/kernel/intc-compact.c
create mode 100644 arch/arc/kernel/mcip.c
create mode 100644 arch/arc/lib/memcpy-archs.S
create mode 100644 arch/arc/lib/memset-archs.S
create mode 100644 arch/arc/lib/strcmp-archs.S
rename arch/arc/mm/{cache_arc700.c => cache.c} (67%)
delete mode 100644 arch/arc/plat-arcfpga/Kconfig
delete mode 100644 arch/arc/plat-arcfpga/include/plat/smp.h
delete mode 100644 arch/arc/plat-arcfpga/smp.c
create mode 100644 arch/arc/plat-axs10x/Kconfig
create mode 100644 arch/arc/plat-axs10x/Makefile
create mode 100644 arch/arc/plat-axs10x/axs10x.c
create mode 100644 arch/arc/plat-sim/Kconfig
rename arch/arc/{plat-arcfpga => plat-sim}/Makefile (75%)
rename arch/arc/{plat-arcfpga => plat-sim}/platform.c (71%)