revert h8300 architecture
Subsystems (10)
v2 cover revert h8300 architecture
Changes for v2
- Use Common Clock Framework
- Use common unistd.h
- Use common ptrace function
- clocksource driver move to drivers/clocksource
- some cleanup
Changes for latest relase (v3.12)
- standard ELF toolchain (h8300-linux)
- use common driver support
- exception handling fix
- too many cleanup
git repositorygit://git.sourceforge.jp/gitroot/uclinux-h8/linux.git h8300
Thanks.
Yoshinori Sato (15):
h8300: Assembly headers.
h8300: UAPI headers
h8300: Exception and Interrupt handling
h8300: kernel booting
h8300: Process and signal
h8300 CPU depend helpers
h8300: miscellaneous functions
h8300: Memory management
h8300: library functions
h8300: Build scripts
h8300: clock driver
h8300: clocksource
h8300: configs
serial: Add h8300
Add ELF machine
arch/h8300/Kconfig | 123 +++++++++ arch/h8300/Kconfig.cpu | 136 ++++++++++ arch/h8300/Kconfig.debug | 65 +++++ arch/h8300/Makefile | 45 ++++ arch/h8300/boot/Makefile | 27 ++ arch/h8300/boot/compressed/Makefile | 37 +++ arch/h8300/boot/compressed/head.S | 48 ++++ arch/h8300/boot/compressed/misc.c | 74 +++++ arch/h8300/boot/compressed/vmlinux.lds | 32 +++ arch/h8300/boot/compressed/vmlinux.scr | 9 + arch/h8300/configs/h8300h-sim_defconfig | 54 ++++ arch/h8300/configs/h8s-sim_defconfig | 56 ++++ arch/h8300/include/asm/Kbuild | 62 +++++ arch/h8300/include/asm/asm-offsets.h | 1 + arch/h8300/include/asm/atomic.h | 159 +++++++++++ arch/h8300/include/asm/bitops.h | 185 +++++++++++++ arch/h8300/include/asm/bootparams.h | 17 ++ arch/h8300/include/asm/bug.h | 12 + arch/h8300/include/asm/cache.h | 11 + arch/h8300/include/asm/checksum.h | 102 +++++++ arch/h8300/include/asm/cmpxchg.h | 65 +++++ arch/h8300/include/asm/cputime.h | 6 + arch/h8300/include/asm/delay.h | 38 +++ arch/h8300/include/asm/device.h | 7 + arch/h8300/include/asm/elf.h | 101 +++++++ arch/h8300/include/asm/emergency-restart.h | 6 + arch/h8300/include/asm/flat.h | 27 ++ arch/h8300/include/asm/io.h | 355 ++++++++++++++++++++++++ arch/h8300/include/asm/irq.h | 26 ++ arch/h8300/include/asm/irqflags.h | 92 +++++++ arch/h8300/include/asm/mc146818rtc.h | 9 + arch/h8300/include/asm/mutex.h | 9 + arch/h8300/include/asm/page.h | 9 + arch/h8300/include/asm/page_offset.h | 3 + arch/h8300/include/asm/pci.h | 19 ++ arch/h8300/include/asm/pgtable.h | 47 ++++ arch/h8300/include/asm/processor.h | 144 ++++++++++ arch/h8300/include/asm/ptrace.h | 36 +++ arch/h8300/include/asm/segment.h | 49 ++++ arch/h8300/include/asm/sh_bios.h | 33 +++ arch/h8300/include/asm/signal.h | 24 ++ arch/h8300/include/asm/smp.h | 1 + arch/h8300/include/asm/spinlock.h | 6 + arch/h8300/include/asm/string.h | 17 ++ arch/h8300/include/asm/switch_to.h | 51 ++++ arch/h8300/include/asm/syscall.h | 56 ++++ arch/h8300/include/asm/thread_info.h | 119 ++++++++ arch/h8300/include/asm/timer.h | 31 +++ arch/h8300/include/asm/timex.h | 19 ++ arch/h8300/include/asm/tlb.h | 8 + arch/h8300/include/asm/topology.h | 6 + arch/h8300/include/asm/traps.h | 31 +++ arch/h8300/include/asm/uaccess.h | 145 ++++++++++ arch/h8300/include/asm/unaligned.h | 11 + arch/h8300/include/asm/user.h | 74 +++++ arch/h8300/include/uapi/asm/Kbuild | 29 ++ arch/h8300/include/uapi/asm/auxvec.h | 4 + arch/h8300/include/uapi/asm/byteorder.h | 6 + arch/h8300/include/uapi/asm/ptrace.h | 42 +++ arch/h8300/include/uapi/asm/sigcontext.h | 18 ++ arch/h8300/include/uapi/asm/signal.h | 115 ++++++++ arch/h8300/include/uapi/asm/swab.h | 1 + arch/h8300/include/uapi/asm/unistd.h | 4 + arch/h8300/kernel/Makefile | 16 ++ arch/h8300/kernel/asm-offsets.c | 60 +++++ arch/h8300/kernel/cpu/Makefile | 5 + arch/h8300/kernel/cpu/h83069/Makefile | 1 + arch/h8300/kernel/cpu/h83069/setup.c | 202 ++++++++++++++ arch/h8300/kernel/cpu/h8s2678/Makefile | 1 + arch/h8300/kernel/cpu/h8s2678/setup.c | 161 +++++++++++ arch/h8300/kernel/cpu/irq_h.c | 62 +++++ arch/h8300/kernel/cpu/irq_s.c | 70 +++++ arch/h8300/kernel/cpu/ptrace_h.c | 256 ++++++++++++++++++ arch/h8300/kernel/cpu/ptrace_s.c | 42 +++ arch/h8300/kernel/entry.S | 418 +++++++++++++++++++++++++++++ arch/h8300/kernel/h8300_ksyms.c | 28 ++ arch/h8300/kernel/head_ram.S | 60 +++++ arch/h8300/kernel/head_rom.S | 108 ++++++++ arch/h8300/kernel/irq.c | 106 ++++++++ arch/h8300/kernel/module.c | 70 +++++ arch/h8300/kernel/process.c | 154 +++++++++++ arch/h8300/kernel/ptrace.c | 203 ++++++++++++++ arch/h8300/kernel/setup.c | 172 ++++++++++++ arch/h8300/kernel/signal.c | 330 +++++++++++++++++++++++ arch/h8300/kernel/sim-console.c | 79 ++++++ arch/h8300/kernel/syscalls.c | 14 + arch/h8300/kernel/traps.c | 166 ++++++++++++ arch/h8300/kernel/vmlinux.lds.S | 85 ++++++ arch/h8300/lib/Makefile | 7 + arch/h8300/lib/abs.S | 20 ++ arch/h8300/lib/ashldi3.c | 58 ++++ arch/h8300/lib/ashrdi3.c | 59 ++++ arch/h8300/lib/checksum.c | 167 ++++++++++++ arch/h8300/lib/libgcc.h | 76 ++++++ arch/h8300/lib/lshrdi3.c | 58 ++++ arch/h8300/lib/memcpy.S | 85 ++++++ arch/h8300/lib/memset.S | 69 +++++ arch/h8300/lib/moddivsi3.S | 106 ++++++++ arch/h8300/lib/modsi3.S | 106 ++++++++ arch/h8300/lib/muldi3.c | 76 ++++++ arch/h8300/lib/mulsi3.S | 67 +++++ arch/h8300/lib/strncpy.S | 34 +++ arch/h8300/lib/udivsi3.S | 107 ++++++++ arch/h8300/mm/Makefile | 5 + arch/h8300/mm/fault.c | 58 ++++ arch/h8300/mm/init.c | 153 +++++++++++ arch/h8300/mm/kmap.c | 58 ++++ arch/h8300/mm/memory.c | 54 ++++ drivers/clk/Makefile | 1 + drivers/clk/h8300/Makefile | 2 + drivers/clk/h8300/clk-h83069.c | 73 +++++ drivers/clk/h8300/clk-h8s2678.c | 165 ++++++++++++ drivers/clocksource/Kconfig | 9 + drivers/clocksource/Makefile | 3 + drivers/clocksource/h8300_timer16.c | 335 +++++++++++++++++++++++ drivers/clocksource/h8300_timer8.c | 400 +++++++++++++++++++++++++++ drivers/clocksource/h8300_tpu.c | 205 ++++++++++++++ drivers/tty/serial/Kconfig | 2 +- include/linux/clk-provider.h | 12 + include/uapi/linux/elf-em.h | 1 + 120 files changed, 8653 insertions(+), 1 deletion(-) 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/boot/Makefile create mode 100644 arch/h8300/boot/compressed/Makefile create mode 100644 arch/h8300/boot/compressed/head.S create mode 100644 arch/h8300/boot/compressed/misc.c create mode 100644 arch/h8300/boot/compressed/vmlinux.lds create mode 100644 arch/h8300/boot/compressed/vmlinux.scr create mode 100644 arch/h8300/configs/h8300h-sim_defconfig create mode 100644 arch/h8300/configs/h8s-sim_defconfig create mode 100644 arch/h8300/include/asm/Kbuild create mode 100644 arch/h8300/include/asm/asm-offsets.h create mode 100644 arch/h8300/include/asm/atomic.h create mode 100644 arch/h8300/include/asm/bitops.h create mode 100644 arch/h8300/include/asm/bootparams.h create mode 100644 arch/h8300/include/asm/bug.h create mode 100644 arch/h8300/include/asm/cache.h create mode 100644 arch/h8300/include/asm/checksum.h create mode 100644 arch/h8300/include/asm/cmpxchg.h create mode 100644 arch/h8300/include/asm/cputime.h create mode 100644 arch/h8300/include/asm/delay.h create mode 100644 arch/h8300/include/asm/device.h create mode 100644 arch/h8300/include/asm/elf.h create mode 100644 arch/h8300/include/asm/emergency-restart.h create mode 100644 arch/h8300/include/asm/flat.h create mode 100644 arch/h8300/include/asm/io.h create mode 100644 arch/h8300/include/asm/irq.h create mode 100644 arch/h8300/include/asm/irqflags.h create mode 100644 arch/h8300/include/asm/mc146818rtc.h create mode 100644 arch/h8300/include/asm/mutex.h create mode 100644 arch/h8300/include/asm/page.h create mode 100644 arch/h8300/include/asm/page_offset.h create mode 100644 arch/h8300/include/asm/pci.h create mode 100644 arch/h8300/include/asm/pgtable.h create mode 100644 arch/h8300/include/asm/processor.h create mode 100644 arch/h8300/include/asm/ptrace.h create mode 100644 arch/h8300/include/asm/segment.h create mode 100644 arch/h8300/include/asm/sh_bios.h create mode 100644 arch/h8300/include/asm/signal.h create mode 100644 arch/h8300/include/asm/smp.h create mode 100644 arch/h8300/include/asm/spinlock.h create mode 100644 arch/h8300/include/asm/string.h create mode 100644 arch/h8300/include/asm/switch_to.h create mode 100644 arch/h8300/include/asm/syscall.h create mode 100644 arch/h8300/include/asm/thread_info.h create mode 100644 arch/h8300/include/asm/timer.h create mode 100644 arch/h8300/include/asm/timex.h create mode 100644 arch/h8300/include/asm/tlb.h create mode 100644 arch/h8300/include/asm/topology.h create mode 100644 arch/h8300/include/asm/traps.h create mode 100644 arch/h8300/include/asm/uaccess.h create mode 100644 arch/h8300/include/asm/unaligned.h create mode 100644 arch/h8300/include/asm/user.h create mode 100644 arch/h8300/include/uapi/asm/Kbuild create mode 100644 arch/h8300/include/uapi/asm/auxvec.h create mode 100644 arch/h8300/include/uapi/asm/byteorder.h create mode 100644 arch/h8300/include/uapi/asm/ptrace.h create mode 100644 arch/h8300/include/uapi/asm/sigcontext.h create mode 100644 arch/h8300/include/uapi/asm/signal.h create mode 100644 arch/h8300/include/uapi/asm/swab.h create mode 100644 arch/h8300/include/uapi/asm/unistd.h create mode 100644 arch/h8300/kernel/Makefile create mode 100644 arch/h8300/kernel/asm-offsets.c create mode 100644 arch/h8300/kernel/cpu/Makefile create mode 100644 arch/h8300/kernel/cpu/h83069/Makefile create mode 100644 arch/h8300/kernel/cpu/h83069/setup.c create mode 100644 arch/h8300/kernel/cpu/h8s2678/Makefile create mode 100644 arch/h8300/kernel/cpu/h8s2678/setup.c create mode 100644 arch/h8300/kernel/cpu/irq_h.c create mode 100644 arch/h8300/kernel/cpu/irq_s.c create mode 100644 arch/h8300/kernel/cpu/ptrace_h.c create mode 100644 arch/h8300/kernel/cpu/ptrace_s.c create mode 100644 arch/h8300/kernel/entry.S create mode 100644 arch/h8300/kernel/h8300_ksyms.c create mode 100644 arch/h8300/kernel/head_ram.S create mode 100644 arch/h8300/kernel/head_rom.S create mode 100644 arch/h8300/kernel/irq.c create mode 100644 arch/h8300/kernel/module.c create mode 100644 arch/h8300/kernel/process.c create mode 100644 arch/h8300/kernel/ptrace.c create mode 100644 arch/h8300/kernel/setup.c create mode 100644 arch/h8300/kernel/signal.c create mode 100644 arch/h8300/kernel/sim-console.c create mode 100644 arch/h8300/kernel/syscalls.c create mode 100644 arch/h8300/kernel/traps.c create mode 100644 arch/h8300/kernel/vmlinux.lds.S create mode 100644 arch/h8300/lib/Makefile create mode 100644 arch/h8300/lib/abs.S create mode 100644 arch/h8300/lib/ashldi3.c create mode 100644 arch/h8300/lib/ashrdi3.c create mode 100644 arch/h8300/lib/checksum.c create mode 100644 arch/h8300/lib/libgcc.h create mode 100644 arch/h8300/lib/lshrdi3.c create mode 100644 arch/h8300/lib/memcpy.S create mode 100644 arch/h8300/lib/memset.S create mode 100644 arch/h8300/lib/moddivsi3.S create mode 100644 arch/h8300/lib/modsi3.S create mode 100644 arch/h8300/lib/muldi3.c create mode 100644 arch/h8300/lib/mulsi3.S create mode 100644 arch/h8300/lib/strncpy.S create mode 100644 arch/h8300/lib/udivsi3.S create mode 100644 arch/h8300/mm/Makefile create mode 100644 arch/h8300/mm/fault.c create mode 100644 arch/h8300/mm/init.c create mode 100644 arch/h8300/mm/kmap.c create mode 100644 arch/h8300/mm/memory.c create mode 100644 drivers/clk/h8300/Makefile create mode 100644 drivers/clk/h8300/clk-h83069.c create mode 100644 drivers/clk/h8300/clk-h8s2678.c create mode 100644 drivers/clocksource/h8300_timer16.c create mode 100644 drivers/clocksource/h8300_timer8.c create mode 100644 drivers/clocksource/h8300_tpu.c
Signature · 1 line
2.1.3
PATCH v2 1/15 h8300: Assembly headers.
create mode 100644 arch/h8300/include/asm/Kbuild create mode 100644 arch/h8300/include/asm/asm-offsets.h create mode 100644 arch/h8300/include/asm/atomic.h create mode 100644 arch/h8300/include/asm/bitops.h create mode 100644 arch/h8300/include/asm/bootparams.h create mode 100644 arch/h8300/include/asm/bug.h create mode 100644 arch/h8300/include/asm/cache.h create mode 100644 arch/h8300/include/asm/checksum.h create mode 100644 arch/h8300/include/asm/cmpxchg.h create mode 100644 arch/h8300/include/asm/cputime.h create mode 100644 arch/h8300/include/asm/delay.h create mode 100644 arch/h8300/include/asm/device.h create mode 100644 arch/h8300/include/asm/elf.h create mode 100644 arch/h8300/include/asm/emergency-restart.h create mode 100644 arch/h8300/include/asm/flat.h create mode 100644 arch/h8300/include/asm/io.h create mode 100644 arch/h8300/include/asm/irq.h create mode 100644 arch/h8300/include/asm/irqflags.h create mode 100644 arch/h8300/include/asm/mc146818rtc.h create mode 100644 arch/h8300/include/asm/mutex.h create mode 100644 arch/h8300/include/asm/page.h create mode 100644 arch/h8300/include/asm/page_offset.h create mode 100644 arch/h8300/include/asm/pci.h create mode 100644 arch/h8300/include/asm/pgtable.h create mode 100644 arch/h8300/include/asm/processor.h create mode 100644 arch/h8300/include/asm/ptrace.h create mode 100644 arch/h8300/include/asm/segment.h create mode 100644 arch/h8300/include/asm/sh_bios.h create mode 100644 arch/h8300/include/asm/signal.h create mode 100644 arch/h8300/include/asm/smp.h create mode 100644 arch/h8300/include/asm/spinlock.h create mode 100644 arch/h8300/include/asm/string.h create mode 100644 arch/h8300/include/asm/switch_to.h create mode 100644 arch/h8300/include/asm/syscall.h create mode 100644 arch/h8300/include/asm/thread_info.h create mode 100644 arch/h8300/include/asm/timer.h create mode 100644 arch/h8300/include/asm/timex.h create mode 100644 arch/h8300/include/asm/tlb.h create mode 100644 arch/h8300/include/asm/topology.h create mode 100644 arch/h8300/include/asm/traps.h create mode 100644 arch/h8300/include/asm/uaccess.h create mode 100644 arch/h8300/include/asm/unaligned.h create mode 100644 arch/h8300/include/asm/user.h
arch/h8300/include/asm/Kbuild new file +62 -0
@@ -0,0 +1,62 @@ +generic-y += barrier.h +generic-y += bitsperlong.h +generic-y += bugs.h +generic-y += cacheflush.h +generic-y += clkdev.h +generic-y += cputime.h +generic-y += current.h +generic-y += div64.h +generic-y += dma.h +generic-y += emergency-restart.h +generic-y += errno.h +generic-y += exec.h +generic-y += fcntl.h +generic-y += ftrace.h +generic-y += hardirq.h +generic-y += hash.h +generic-y += hw_irq.h +generic-y += ioctl.h +generic-y += ioctls.h +generic-y += ipcbuf.h +generic-y += irq_regs.h +generic-y += irq_work.h +generic-y += kdebug.h +generic-y += kmap_types.h +generic-y += kvm_para.h +generic-y += linkage.h +generic-y += local.h +generic-y += local64.h +generic-y += mcs_spinlock.h +generic-y += mman.h +generic-y += mmu.h +generic-y += mmu_context.h +generic-y += module.h +generic-y += msgbuf.h +generic-y += param.h +generic-y += parport.h +generic-y += percpu.h +generic-y += pgalloc.h +generic-y += poll.h +generic-y += posix_types.h +generic-y += preempt.h +generic-y += resource.h +generic-y += scatterlist.h +generic-y += sections.h +generic-y += sembuf.h +generic-y += serial.h +generic-y += setup.h +generic-y += shmbuf.h +generic-y += shmparam.h +generic-y += siginfo.h +generic-y += sizes.h +generic-y += socket.h +generic-y += sockios.h +generic-y += stat.h +generic-y += statfs.h +generic-y += termbits.h +generic-y += termios.h +generic-y += tlbflush.h +generic-y += trace_clock.h +generic-y += types.h +generic-y += ucontext.h +generic-y += xor.h
arch/h8300/include/asm/asm-offsets.h new file +1 -0
@@ -0,0 +1 @@ +#include <generated/asm-offsets.h>
arch/h8300/include/asm/atomic.h new file +159 -0
159 lines not on this page · raw message
arch/h8300/include/asm/bitops.h new file +185 -0
185 lines not on this page · raw message
arch/h8300/include/asm/bootparams.h new file +17 -0
@@ -0,0 +1,17 @@ +/* +H8/300 kernel boot parameters +*/ + +#ifndef __ASM_H8300_BOOTPARAMS__ +#define __ASM_H8300_BOOTPARAMS__ + +struct bootparams { +short size; +unsigned char gpio_ddr[24 ]; +unsigned char gpio_use[24 ]; +unsigned int clock_freq; +unsigned int ram_end; +unsigned char *command_line; +} __packed__aligned(2) ; + +#endif
arch/h8300/include/asm/bug.h new file +12 -0
@@ -0,0 +1,12 @@ +#ifndef _H8300_BUG_H +#define _H8300_BUG_H + +/* always true */ +#define is_valid_bugaddr (addr) (1) + +#include <asm-generic/bug.h> + +struct pt_regs ; +extern void die (const char *str,struct pt_regs *fp,unsigned long err); + +#endif
arch/h8300/include/asm/cache.h new file +11 -0
@@ -0,0 +1,11 @@ +#ifndef __ARCH_H8300_CACHE_H +#define __ARCH_H8300_CACHE_H + +/* bytes per L1 cache line */ +#define L1_CACHE_SHIFT 2 +#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) + +#define __cacheline_aligned +#define ____cacheline_aligned + +#endif
arch/h8300/include/asm/checksum.h new file +102 -0
102 lines not on this page · raw message
arch/h8300/include/asm/cmpxchg.h new file +65 -0
65 lines not on this page · raw message
arch/h8300/include/asm/cputime.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef __H8300_CPUTIME_H +#define __H8300_CPUTIME_H + +#include <asm-generic/cputime.h> + +#endif /* __H8300_CPUTIME_H */
arch/h8300/include/asm/delay.h new file +38 -0
@@ -0,0 +1,38 @@ +#ifndef _H8300_DELAY_H +#define _H8300_DELAY_H + +#include <asm/param.h> + +/* +* Copyright (C) 2002 Yoshinori Sato <[email protected]> +* +* Delay routines, using a pre-computed "loops_per_second" value. +*/ + +static inline void __delay (unsigned long loops) +{ + __asm__ __volatile__ ("1:\n\t" +"dec.l #1,%0\n\t" +"bne 1b" + :"=r" (loops) :"0" (loops)); +} + +/* +* Use only for very small delays ( < 1 msec). Should probably use a +* lookup table, really, as the multiplications take much too long with +* short delays. This is a "reasonable" implementation, though (and the +* first constant multiplications gets optimized away if the delay is +* a constant) +*/ + +extern unsigned long loops_per_jiffy; + +static inline void udelay (unsigned long usecs) +{ + usecs *=4295 ;/* 2**32 / 1000000 */ + usecs /= (loops_per_jiffy*HZ ); +if (usecs) +__delay (usecs); +} + +#endif /* _H8300_DELAY_H */
arch/h8300/include/asm/device.h new file +7 -0
@@ -0,0 +1,7 @@ +/* +* Arch specific extensions to struct device +* +* This file is released under the GPLv2 +*/ +#include <asm-generic/device.h> +
arch/h8300/include/asm/elf.h new file +101 -0
101 lines not on this page · raw message
arch/h8300/include/asm/emergency-restart.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef _ASM_EMERGENCY_RESTART_H +#define _ASM_EMERGENCY_RESTART_H + +#include <asm-generic/emergency-restart.h> + +#endif /* _ASM_EMERGENCY_RESTART_H */
arch/h8300/include/asm/flat.h new file +27 -0
@@ -0,0 +1,27 @@ +/* +* arch/h8300/asm/include/flat.h -- uClinux flat-format executables +*/ + +#ifndef __H8300_FLAT_H__ +#define __H8300_FLAT_H__ + +#define flat_argvp_envp_on_stack () 1 +#define flat_old_ram_flag (flags) 1 +#define flat_reloc_valid (reloc, size) ((reloc) <= (size)) +#define flat_set_persistent (relval, p) 0 + +/* +* on the H8 a couple of the relocations have an instruction in the +* top byte. As there can only be 24bits of address space, we just +* always preserve that 8bits at the top, when it isn't an instruction +* is is 0 ([email protected]) +*/ + +#define flat_get_relocate_addr (rel) (rel & ~0x00000001) +#define flat_get_addr_from_rp (rp, relval, flags, persistent) \ + (get_unaligned(rp) & (((flags) & FLAT_FLAG_GOTPIC) ? \ + 0xffffffff : 0x00ffffff)) +#define flat_put_addr_at_rp (rp, addr, rel) \ + put_unaligned (((*(char *)(rp)) << 24) | ((addr) & 0x00ffffff), (rp)) + +#endif /* __H8300_FLAT_H__ */
arch/h8300/include/asm/io.h new file +355 -0
355 lines not on this page · raw message
arch/h8300/include/asm/irq.h new file +26 -0
@@ -0,0 +1,26 @@ +#ifndef _H8300_IRQ_H_ +#define _H8300_IRQ_H_ + +#include <linux/irqchip.h> + +#if defined(CONFIG_CPU_H8300H ) +#define NR_IRQS 64 +#define IRQ_CHIP h8300h_irq_chip +#define EXT_IRQ0 12 +#define EXT_IRQS 6 +#elif defined(CONFIG_CPU_H8S ) +#define NR_IRQS 128 +#define IRQ_CHIP h8s_irq_chip +#define EXT_IRQ0 16 +#define EXT_IRQS 16 +#endif + +static __inline__int irq_canonicalize (int irq) +{ +return irq; +} + +void h8300_init_ipr (void ); +extern struct irq_chip h8300h_irq_chip; +extern struct irq_chip h8s_irq_chip; +#endif /* _H8300_IRQ_H_ */
arch/h8300/include/asm/irqflags.h new file +92 -0
92 lines not on this page · raw message
arch/h8300/include/asm/mc146818rtc.h new file +9 -0
@@ -0,0 +1,9 @@ +/* +* Machine dependent access functions for RTC registers. +*/ +#ifndef _H8300_MC146818RTC_H +#define _H8300_MC146818RTC_H + +/* empty include file to satisfy the include in genrtc.c/ide-geometry.c */ + +#endif /* _H8300_MC146818RTC_H */
arch/h8300/include/asm/mutex.h new file +9 -0
@@ -0,0 +1,9 @@ +/* +* Pull in the generic implementation for the mutex fastpath. +* +* TODO: implement optimized primitives instead, or leave the generic +* implementation in place, or pick the atomic_xchg() based generic +* implementation. (see asm-generic/mutex-xchg.h for details) +*/ + +#include <asm-generic/mutex-dec.h>
arch/h8300/include/asm/page.h new file +9 -0
@@ -0,0 +1,9 @@ +#ifndef _H8300_PAGE_H +#define _H8300_PAGE_H + +#include <asm-generic/page.h> +#include <linux/types.h> + +#define MAP_NR (addr) (((uintptr_t)(addr)-PAGE_OFFSET) >> PAGE_SHIFT) + +#endif
arch/h8300/include/asm/page_offset.h new file +3 -0
@@ -0,0 +1,3 @@ + +#define PAGE_OFFSET_RAW 0x00000000 +
arch/h8300/include/asm/pci.h new file +19 -0
@@ -0,0 +1,19 @@ +#ifndef _ASM_H8300_PCI_H +#define _ASM_H8300_PCI_H + +/* +* asm-h8300/pci.h - H8/300 specific PCI declarations. +* +* Yoshinori Sato <[email protected]> +*/ + +#define pcibios_assign_all_busses () 0 + +static inline void pcibios_penalize_isa_irq (int irq,int active) +{ +/* We don't do dynamic PCI IRQ allocation */ +} + +#define PCI_DMA_BUS_IS_PHYS (1) + +#endif /* _ASM_H8300_PCI_H */
arch/h8300/include/asm/pgtable.h new file +47 -0
47 lines not on this page · raw message
arch/h8300/include/asm/processor.h new file +144 -0
144 lines not on this page · raw message
arch/h8300/include/asm/ptrace.h new file +36 -0
@@ -0,0 +1,36 @@ +#ifndef _H8300_PTRACE_H +#define _H8300_PTRACE_H + +#include <uapi/asm/ptrace.h> + +#ifndef __ASSEMBLY__ +#ifndef PS_S +#define PS_S (0x10) +#endif + +#if defined(CONFIG_CPU_H8300H ) +#define H8300_REGS_NO 11 +#endif +#if defined(CONFIG_CPU_H8S ) +#define H8300_REGS_NO 12 +#endif + +#define arch_has_single_step () (1) + +#define user_mode (regs) (!((regs)->ccr & PS_S)) +#define instruction_pointer (regs) ((regs)->pc) +#define profile_pc (regs) instruction_pointer(regs) +#define user_stack_pointer (regs) ((regs)->sp) +#define current_pt_regs () ((struct pt_regs *) \ + (THREAD_SIZE + (unsigned long)current_thread_info()) - 1) +#define signal_pt_regs () ((struct pt_regs *)current->thread.esp0) +#define current_user_stack_pointer () rdusp() +#define task_pt_regs (task) \ + ((struct pt_regs *) (task_stack_page(task) + THREAD_SIZE) - 1) + +extern long h8300_get_reg (struct task_struct *task,int regno); +extern int h8300_put_reg (struct task_struct *task,int regno, +unsigned long data); + +#endif /* __ASSEMBLY__ */ +#endif /* _H8300_PTRACE_H */
arch/h8300/include/asm/segment.h new file +49 -0
49 lines not on this page · raw message
arch/h8300/include/asm/sh_bios.h new file +33 -0
@@ -0,0 +1,33 @@ +/* eCos HAL interface header */ + +#ifndef SH_BIOS_H +#define SH_BIOS_H + +#define HAL_IF_VECTOR_TABLE 0xfffe20 +#define CALL_IF_SET_CONSOLE_COMM 13 +#define QUERY_CURRENT -1 +#define MANGLER -3 + +/* Checking for GDB stub active */ +/* suggestion Jonathan Larmour */ +static int sh_bios_in_gdb_mode (void ) +{ +static int gdb_active =-1 ; + +if (gdb_active ==-1 ) { +int (*set_console_comm)(int ); + + set_console_comm = + ((void **)HAL_IF_VECTOR_TABLE )[CALL_IF_SET_CONSOLE_COMM ]; + gdb_active = + (set_console_comm (QUERY_CURRENT ) ==MANGLER ); + } +return gdb_active; +} + +static void sh_bios_gdb_detach (void ) +{ + +} + +#endif
arch/h8300/include/asm/signal.h new file +24 -0
@@ -0,0 +1,24 @@ +#ifndef _H8300_SIGNAL_H +#define _H8300_SIGNAL_H + +#include <uapi/asm/signal.h> + +/* Most things should be clean enough to redefine this at will, if care +is taken to make libc match. */ + +#define _NSIG 64 +#define _NSIG_BPW 32 +#define _NSIG_WORDS (_NSIG / _NSIG_BPW) + +typedef unsigned long old_sigset_t ;/* at least 32 bits */ + +typedef struct { +unsigned long sig[_NSIG_WORDS]; +}sigset_t ; + +#define __ARCH_HAS_SA_RESTORER + +#include <asm/sigcontext.h> +#undef __HAVE_ARCH_SIG_BITOPS + +#endif /* _H8300_SIGNAL_H */
arch/h8300/include/asm/smp.h new file +1 -0
@@ -0,0 +1 @@ +/* nothing required here yet */
arch/h8300/include/asm/spinlock.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef __H8300_SPINLOCK_H +#define __H8300_SPINLOCK_H + +#error "H8/300 doesn't do SMP yet" + +#endif
arch/h8300/include/asm/string.h new file +17 -0
@@ -0,0 +1,17 @@ +#ifndef _H8300_STRING_H_ +#define _H8300_STRING_H_ + +#ifdef __KERNEL__/* only set these up for kernel code */ + +#include <asm/setup.h> +#include <asm/page.h> + +#define __HAVE_ARCH_MEMSET +extern void *memset (void *s,int c,size_t count); + +#define __HAVE_ARCH_MEMCPY +extern void *memcpy (void *d,const void *s,size_t count); + +#endif /* KERNEL */ + +#endif
arch/h8300/include/asm/switch_to.h new file +51 -0
51 lines not on this page · raw message
arch/h8300/include/asm/syscall.h new file +56 -0
56 lines not on this page · raw message
arch/h8300/include/asm/thread_info.h new file +119 -0
119 lines not on this page · raw message
arch/h8300/include/asm/timer.h new file +31 -0
@@ -0,0 +1,31 @@ +#ifndef __H8300_TIMER_H +#define __H8300_TIMER_H + +unsigned long get_cpu_clock (void ); + +#define H8300_TIMER_FREQ get_cpu_clock()/* Timer input freq. */ + +#define H8300_TMR8_CLKSRC 0 +#define H8300_TMR8_CLKEVTDEV 1 + +#define H8300_TMR8_DIV_8 0 +#define H8300_TMR8_DIV_64 1 +#define H8300_TMR8_DIV_8192 2 + +struct h8300_timer8_config { +int mode; +int div; +int rating; +}; + +struct h8300_timer16_config { +int rating; +__u8 enb; +__u8 imfa; +__u8 imiea; +}; + +struct h8300_tpu_config { +int rating; +}; +#endif
arch/h8300/include/asm/timex.h new file +19 -0
@@ -0,0 +1,19 @@ +/* +* linux/include/asm-h8300/timex.h +* +* H8/300 architecture timex specifications +*/ +#ifndef _ASM_H8300_TIMEX_H +#define _ASM_H8300_TIMEX_H + +#define CLOCK_TICK_RATE (CONFIG_CPU_CLOCK*1000/8192)/* Timer input freq. */ + +typedef unsigned long cycles_t ; +extern short h8300_timer_count; + +static inline cycles_t get_cycles (void ) +{ +return 0 ; +} + +#endif
arch/h8300/include/asm/tlb.h new file +8 -0
@@ -0,0 +1,8 @@ +#ifndef __H8300_TLB_H__ +#define __H8300_TLB_H__ + +#define tlb_flush (tlb) do { } while (0) + +#include <asm-generic/tlb.h> + +#endif
arch/h8300/include/asm/topology.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef _ASM_H8300_TOPOLOGY_H +#define _ASM_H8300_TOPOLOGY_H + +#include <asm-generic/topology.h> + +#endif /* _ASM_H8300_TOPOLOGY_H */
arch/h8300/include/asm/traps.h new file +31 -0
@@ -0,0 +1,31 @@ +/* +* linux/include/asm-h8300/traps.h +* +* Copyright (C) 2003 Yoshinori Sato <[email protected]> +* +* 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. +*/ + +#ifndef _H8300_TRAPS_H +#define _H8300_TRAPS_H + +extern void _system_call (void ); +extern void _interrupt_entry (void ); +extern void _trace_break (void ); +extern void _nmi (void ); + +#define JMP_OP 0x5a000000 +#define JSR_OP 0x5e000000 +#define VECTOR (address) ((JMP_OP)|((unsigned long)address)) +#define REDIRECT (address) ((JSR_OP)|((unsigned long)address)) + +#define TRACE_VEC 5 + +#define TRAP0_VEC 8 +#define TRAP1_VEC 9 +#define TRAP2_VEC 10 +#define TRAP3_VEC 11 + +#endif /* _H8300_TRAPS_H */
arch/h8300/include/asm/uaccess.h new file +145 -0
145 lines not on this page · raw message
arch/h8300/include/asm/unaligned.h new file +11 -0
@@ -0,0 +1,11 @@ +#ifndef _ASM_H8300_UNALIGNED_H +#define _ASM_H8300_UNALIGNED_H + +#include <linux/unaligned/be_memmove.h> +#include <linux/unaligned/le_byteshift.h> +#include <linux/unaligned/generic.h> + +#define get_unaligned __get_unaligned_be +#define put_unaligned __put_unaligned_be + +#endif /* _ASM_H8300_UNALIGNED_H */
arch/h8300/include/asm/user.h new file +74 -0
74 lines not on this page · raw message
Signature · 1 line
2.1.3
PATCH v2 2/15 h8300: UAPI headers
In reply to Yoshinori Satocreate mode 100644 arch/h8300/include/uapi/asm/Kbuild create mode 100644 arch/h8300/include/uapi/asm/auxvec.h create mode 100644 arch/h8300/include/uapi/asm/byteorder.h create mode 100644 arch/h8300/include/uapi/asm/ptrace.h create mode 100644 arch/h8300/include/uapi/asm/sigcontext.h create mode 100644 arch/h8300/include/uapi/asm/signal.h create mode 100644 arch/h8300/include/uapi/asm/swab.h create mode 100644 arch/h8300/include/uapi/asm/unistd.h
arch/h8300/include/uapi/asm/Kbuild new file +29 -0
@@ -0,0 +1,29 @@ +# UAPI Header export list +include include/uapi/asm-generic/Kbuild.asm + +header-y += auxvec.h +header-y += bitsperlong.h +header-y += errno.h +header-y += fcntl.h +header-y += ioctl.h +header-y += ioctls.h +header-y += ipcbuf.h +header-y += kvm_para.h +header-y += mman.h +header-y += msgbuf.h +header-y += param.h +header-y += poll.h +header-y += posix_types.h +header-y += resource.h +header-y += sembuf.h +header-y += setup.h +header-y += shmbuf.h +header-y += siginfo.h +header-y += socket.h +header-y += sockios.h +header-y += stat.h +header-y += statfs.h +header-y += termbits.h +header-y += termios.h +header-y += types.h +header-y += unistd.h
arch/h8300/include/uapi/asm/auxvec.h new file +4 -0
@@ -0,0 +1,4 @@ +#ifndef __ASMH8300_AUXVEC_H +#define __ASMH8300_AUXVEC_H + +#endif
arch/h8300/include/uapi/asm/byteorder.h new file +6 -0
@@ -0,0 +1,6 @@ +#ifndef _H8300_BYTEORDER_H +#define _H8300_BYTEORDER_H + +#include <linux/byteorder/big_endian.h> + +#endif /* _H8300_BYTEORDER_H */
arch/h8300/include/uapi/asm/ptrace.h new file +42 -0
42 lines not on this page · raw message
arch/h8300/include/uapi/asm/sigcontext.h new file +18 -0
@@ -0,0 +1,18 @@ +#ifndef _ASM_H8300_SIGCONTEXT_H +#define _ASM_H8300_SIGCONTEXT_H + +struct sigcontext { +unsigned long sc_mask;/* old sigmask */ +unsigned long sc_usp;/* old user stack pointer */ +unsigned long sc_er0; +unsigned long sc_er1; +unsigned long sc_er2; +unsigned long sc_er3; +unsigned long sc_er4; +unsigned long sc_er5; +unsigned long sc_er6; +unsigned short sc_ccr; +unsigned long sc_pc; +}; + +#endif
arch/h8300/include/uapi/asm/signal.h new file +115 -0
115 lines not on this page · raw message
arch/h8300/include/uapi/asm/swab.h new file +1 -0
@@ -0,0 +1 @@ +#include <asm-generic/swab.h>
arch/h8300/include/uapi/asm/unistd.h new file +4 -0
@@ -0,0 +1,4 @@ +#define __ARCH_NOMMU +#define __ARCH_WANT_SYS_CLONE + +#include <asm-generic/unistd.h>
Signature · 1 line
2.1.3
PATCH v2 3/15 h8300: Exception and Interrupt handling
In reply to Yoshinori Satocreate mode 100644 arch/h8300/kernel/entry.S create mode 100644 arch/h8300/kernel/irq.c create mode 100644 arch/h8300/kernel/traps.c
arch/h8300/kernel/entry.S new file +418 -0
@@ -0,0 +1,418 @@ +/* + * + * linux/arch/h8300/kernel/entry.S + * + * Yoshinori Sato <[email protected]> + * David McCullough <[email protected]> + * + */ + +/* + * entry.S + * include exception/interrupt gateway + * system call entry + */ + +#include <linux/sys.h> +#include <asm/unistd.h> +#include <asm/setup.h> +#include <asm/segment.h> +#include <asm/linkage.h> +#include <asm/asm-offsets.h> +#include <asm/thread_info.h> +#include <asm/errno.h> + +#if defined(CONFIG_CPU_H8300H) +#define USERRET 8 +INTERRUPTS = 64 + .h8300h + .macro SHLL2 reg + shll.l \reg + shll.l \reg + .endm + .macro SHLR2 reg + shlr.l \reg + shlr.l \reg + .endm + .macro SAVEREGS + mov.l er0,@-sp + mov.l er1,@-sp + mov.l er2,@-sp + mov.l er3,@-sp + .endm + .macro RESTOREREGS + mov.l @sp+,er3 + mov.l @sp+,er2 + .endm + .macro SAVEEXR + .endm + .macro RESTOREEXR + .endm +#endif +#if defined(CONFIG_CPU_H8S) +#define USERRET 10 +#define USEREXR 8 +INTERRUPTS = 128 + .h8300s + .macro SHLL2 reg + shll.l #2,\reg + .endm + .macro SHLR2 reg + shlr.l #2,\reg + .endm + .macro SAVEREGS + stm.l er0-er3,@-sp + .endm + .macro RESTOREREGS + ldm.l @sp+,er2-er3 + .endm + .macro SAVEEXR + mov.w @(USEREXR:16,er0),r1 + mov.w r1,@(LEXR-LER3:16,sp) /* copy EXR */ + .endm + .macro RESTOREEXR + mov.w @(LEXR-LER1:16,sp),r1 /* restore EXR */ + mov.b r1l,r1h + mov.w r1,@(USEREXR:16,er0) + .endm +#endif + + +/* CPU context save/restore macros. */ + + .macro SAVE_ALL + mov.l er0,@-sp + stc ccr,r0l /* check kernel mode */ + btst #4,r0l + bne 5f + + /* user mode */ + mov.l sp,@_sw_usp + mov.l @sp,er0 /* restore saved er0 */ + orc #0x10,ccr /* switch kernel stack */ + mov.l @_sw_ksp,sp + sub.l #(LRET-LORIG),sp /* allocate LORIG - LRET */ + SAVEREGS + mov.l @_sw_usp,er0 + mov.l @(USERRET:16,er0),er1 /* copy the RET addr */ + mov.l er1,@(LRET-LER3:16,sp) + SAVEEXR + + mov.l @(LORIG-LER3:16,sp),er0 + mov.l er0,@(LER0-LER3:16,sp) /* copy ER0 */ + mov.w e1,r1 /* e1 highbyte = ccr */ + and #0xef,r1h /* mask mode? flag */ + bra 6f +5: + /* kernel mode */ + mov.l @sp,er0 /* restore saved er0 */ + subs #2,sp /* set dummy ccr */ + subs #4,sp /* set dummp sp */ + SAVEREGS + mov.w @(LRET-LER3:16,sp),r1 /* copy old ccr */ +6: + mov.b r1h,r1l + mov.b #0,r1h + mov.w r1,@(LCCR-LER3:16,sp) /* set ccr */ + mov.l @_sw_usp,er2 + mov.l er2,@(LSP-LER3:16,sp) /* set usp */ + mov.l er6,@-sp /* syscall arg #6 */ + mov.l er5,@-sp /* syscall arg #5 */ + mov.l er4,@-sp /* syscall arg #4 */ + .endm /* r1 = ccr */ + + .macro RESTORE_ALL + mov.l @sp+,er4 + mov.l @sp+,er5 + mov.l @sp+,er6 + RESTOREREGS + mov.w @(LCCR-LER1:16,sp),r0 /* check kernel mode */ + btst #4,r0l + bne 7f + + orc #0xc0,ccr + mov.l @(LSP-LER1:16,sp),er0 + mov.l @(LER0-LER1:16,sp),er1 /* restore ER0 */ + mov.l er1,@er0 + RESTOREEXR + mov.w @(LCCR-LER1:16,sp),r1 /* restore the RET addr */ + mov.b r1l,r1h + mov.b @(LRET+1-LER1:16,sp),r1l + mov.w r1,e1 + mov.w @(LRET+2-LER1:16,sp),r1 + mov.l er1,@(USERRET:16,er0) + + mov.l @sp+,er1 + add.l #(LRET-LER1),sp /* remove LORIG - LRET */ + mov.l sp,@_sw_ksp + andc #0xef,ccr /* switch to user mode */ + mov.l er0,sp + bra 8f +7: + mov.l @sp+,er1 + add.l #10,sp +8: + mov.l @sp+,er0 + adds #4,sp /* remove the sw created LVEC */ + rte + .endm + +.globl _system_call +.globl ret_from_exception +.globl ret_from_fork +.globl ret_from_kernel_thread +.globl ret_from_interrupt +.globl _interrupt_redirect_table +.globl _sw_ksp,_sw_usp +.globl _resume +.globl _interrupt_entry +.globl _trace_break +.globl _nmi + +#if defined(CONFIG_ROMKERNEL) + .section .int_redirect,"ax" +_interrupt_redirect_table: +#if defined(CONFIG_CPU_H8300H) + .rept 7 + .long 0 + .endr +#endif +#if defined(CONFIG_CPU_H8S) + .rept 5 + .long 0 + .endr + jmp @_trace_break + .long 0 +#endif + + jsr @_interrupt_entry /* NMI */ + jmp @_system_call /* TRAPA #0 (System call) */ + .long 0 + .long 0 + jmp @_trace_break /* TRAPA #3 (breakpoint) */ + .rept INTERRUPTS-12 + jsr @_interrupt_entry + .endr +#endif +#if defined(CONFIG_RAMKERNEL) +.globl _interrupt_redirect_table + .section .bss +_interrupt_redirect_table: + .space 4 +#endif + + .section .text + .align 2 +_interrupt_entry: + SAVE_ALL +/* r1l is saved ccr */ + mov.l sp,er0 + add.l #LVEC,er0 + btst #4,r1l + bne 1f + /* user LVEC */ + mov.l @_sw_usp,er0 + adds #4,er0 +1: + mov.l @er0,er0 /* LVEC address */ +#if defined(CONFIG_ROMKERNEL) + sub.l #_interrupt_redirect_table,er0 +#endif +#if defined(CONFIG_RAMKERNEL) + mov.l @_interrupt_redirect_table,er1 + sub.l er1,er0 +#endif + SHLR2 er0 + dec.l #1,er0 + mov.l sp,er1 + subs #4,er1 /* adjust ret_pc */ +#if defined(CONFIG_CPU_H8S) + orc #7,exr +#endif + jsr @do_IRQ + jmp @ret_from_interrupt + +_system_call: + subs #4,sp /* dummy LVEC */ + SAVE_ALL + /* er0: syscall nr */ + andc #0xbf,ccr + mov.l er0,er4 + + /* save top of frame */ + mov.l sp,er0 + jsr @set_esp0 + mov.l sp,er2 + and.w #0xe000,r2 + mov.l @(TI_FLAGS:16,er2),er2 + and.w #_TIF_WORK_SYSCALL_MASK,r2 + beq 1f + mov.l sp,er0 + jsr @do_syscall_trace_enter +1: + cmp.l #__NR_syscalls,er4 + bcc badsys + SHLL2 er4 + mov.l #_sys_call_table,er0 + add.l er4,er0 + mov.l @er0,er4 + beq ret_from_exception:16 + mov.l @(LER1:16,sp),er0 + mov.l @(LER2:16,sp),er1 + mov.l @(LER3:16,sp),er2 + jsr @er4 + mov.l er0,@(LER0:16,sp) /* save the return value */ + mov.l sp,er2 + and.w #0xe000,r2 + mov.l @(TI_FLAGS:16,er2),er2 + and.w #_TIF_WORK_SYSCALL_MASK,r2 + beq 2f + mov.l sp,er0 + jsr @do_syscall_trace_leave +2: + orc #0xc0,ccr + bra resume_userspace + +badsys: + mov.l #-ENOSYS,er0 + mov.l er0,@(LER0:16,sp) + bra resume_userspace + +#if !defined(CONFIG_PREEMPT) +#define resume_kernel restore_all +#endif + +ret_from_exception: +#if defined(CONFIG_PREEMPT) + orc #0xc0,ccr +#endif +ret_from_interrupt: + mov.b @(LCCR+1:16,sp),r0l + btst #4,r0l +#if defined(CONFIG_PREEMPT) + bne resume_kernel:16 /* return from kernel */ +#else + bne restore_all:16 /* return from kernel */ +#endif +resume_userspace: + andc #0xbf,ccr + mov.l sp,er4 + and.w #0xe000,r4 /* er4 <- current thread info */ + mov.l @(TI_FLAGS:16,er4),er1 + and.l #_TIF_WORK_MASK,er1 + beq restore_all:8 +work_pending: + btst #TIF_NEED_RESCHED,r1l + bne work_resched:8 + /* work notifysig */ + mov.l sp,er0 + subs #4,er0 /* er0: pt_regs */ + jsr @do_notify_resume + bra restore_all:8 +work_resched: + mov.l sp,er0 + jsr @set_esp0 + jsr @schedule + bra resume_userspace:8 +restore_all: + RESTORE_ALL /* Does RTE */ + +#if defined(CONFIG_PREEMPT) +resume_kernel: + mov.l @(TI_PRE_COUNT:16,er4),er0 + bne restore_all:8 +need_resched: + mov.l @(TI_FLAGS:16,er4),er0 + btst #TIF_NEED_RESCHED,r0l + beq restore_all:8 + mov.b @(LCCR+1:16,sp),r0l /* Interrupt Enabled? */ + bmi restore_all:8 + mov.l sp,er0 + jsr @set_esp0 + jsr @preempt_schedule_irq + bra need_resched:8 +#endif + +ret_from_fork: + mov.l er2,er0 + jsr @schedule_tail + jmp @ret_from_exception + +ret_from_kernel_thread: + mov.l er2,er0 + jsr @schedule_tail + mov.l @(LER4:16,sp),er0 + mov.l @(LER5:16,sp),er1 + jsr @er1 + jmp @ret_from_exception + +_resume: + /* + * Beware - when entering resume, offset of tss is in d1, + * prev (the current task) is in a0, next (the new task) + * is in a1 and d2.b is non-zero if the mm structure is + * shared between the tasks, so don't change these + * registers until their contents are no longer needed. + */ + + /* save sr */ + sub.w r3,r3 + stc ccr,r3l + mov.w r3,@(THREAD_CCR+2:16,er0) + + /* disable interrupts */ + orc #0xc0,ccr + mov.l @_sw_usp,er3 + mov.l er3,@(THREAD_USP:16,er0) + mov.l sp,@(THREAD_KSP:16,er0) + + /* Skip address space switching if they are the same. */ + /* FIXME: what did we hack out of here, this does nothing! */ + + mov.l @(THREAD_USP:16,er1),er0 + mov.l er0,@_sw_usp + mov.l @(THREAD_KSP:16,er1),sp + + /* restore status register */ + mov.w @(THREAD_CCR+2:16,er1),r3 + + ldc r3l,ccr + rts + +_trace_break: + subs #4,sp + SAVE_ALL + sub.l er1,er1 + dec.l #1,er1 + mov.l er1,@(LORIG,sp) + mov.l sp,er0 + jsr @set_esp0 + mov.l @_sw_usp,er0 + mov.l @er0,er1 + mov.w @(-2:16,er1),r2 + cmp.w #0x5730,r2 + beq 1f + subs #2,er1 + mov.l er1,@er0 +1: + and.w #0xff,e1 + mov.l er1,er0 + jsr @trace_trap + jmp @ret_from_exception + +_nmi: + subs #4, sp + mov.l er0, @-sp + mov.l @_interrupt_redirect_table, er0 + add.l #8*4, er0 + mov.l er0, @(4,sp) + mov.l @sp+, er0 + jmp @_interrupt_entry + + .section .bss +_sw_ksp: + .space 4 +_sw_usp: + .space 4 + + .end
arch/h8300/kernel/irq.c new file +106 -0
106 lines not on this page · raw message
arch/h8300/kernel/traps.c new file +166 -0
166 lines not on this page · raw message
Signature · 1 line
2.1.3
PATCH v2 4/15 h8300: kernel booting
In reply to Yoshinori Satocreate mode 100644 arch/h8300/boot/Makefile create mode 100644 arch/h8300/boot/compressed/Makefile create mode 100644 arch/h8300/boot/compressed/head.S create mode 100644 arch/h8300/boot/compressed/misc.c create mode 100644 arch/h8300/boot/compressed/vmlinux.lds create mode 100644 arch/h8300/boot/compressed/vmlinux.scr create mode 100644 arch/h8300/kernel/head_ram.S create mode 100644 arch/h8300/kernel/head_rom.S create mode 100644 arch/h8300/kernel/setup.c
arch/h8300/boot/Makefile new file +27 -0
@@ -0,0 +1,27 @@ +# arch/h8300/boot/Makefile + +targets := vmlinux.srec vmlinux.bin zImage +subdir- := compressed + +OBJCOPYFLAGS_vmlinux.srec := -Osrec +OBJCOPYFLAGS_vmlinux.bin := -Obinary +OBJCOPYFLAGS_zImage := -O binary -R .note -R .comment -R .stab -R .stabstr -S + +UIMAGE_LOADADDR = $(CONFIG_RAMBASE) +UIMAGE_ENTRYADDR = $(shell /bin/bash -c 'printf "0x%08x" \ + $$[$(CONFIG_RAMBASE) + $(CONFIG_OFFSET)]') + +$(obj)/vmlinux.srec $(obj)/vmlinux.bin: vmlinux FORCE + $(call if_changed,objcopy) + +$(obj)/zImage: $(obj)/compressed/vmlinux FORCE + $(call if_changed,objcopy) + +$(obj)/compressed/vmlinux: FORCE + $(Q)$(MAKE) $(build)=$(obj)/compressed $@ + +$(obj)/uImage.bin: $(obj)/vmlinux.bin + $(call if_changed,uimage,none) + +CLEAN_FILES += arch/$(ARCH)/vmlinux.bin arch/$(ARCH)/vmlinux.srec arch/$(ARCH)/uImage.bin +
arch/h8300/boot/compressed/Makefile new file +37 -0
@@ -0,0 +1,37 @@ +# +# linux/arch/sh/boot/compressed/Makefile +# +# create a compressed vmlinux image from the original vmlinux +# + +targets := vmlinux vmlinux.bin vmlinux.bin.gz head.o misc.o piggy.o + +OBJECTS = $(obj)/head.o $(obj)/misc.o + +# +# IMAGE_OFFSET is the load offset of the compression loader +# Assign dummy values if these 2 variables are not defined, +# in order to suppress error message. +# +CONFIG_MEMORY_START ?= 0x00400000 +CONFIG_BOOT_LINK_OFFSET ?= 0x00140000 +IMAGE_OFFSET := $(shell printf "0x%08x" $$(($(CONFIG_MEMORY_START)+$(CONFIG_BOOT_LINK_OFFSET)))) + +LIBGCC := $(shell $(CROSS-COMPILE)$(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name) +LDFLAGS_vmlinux := -Ttext $(IMAGE_OFFSET) -estartup $(obj)/vmlinux.lds + +$(obj)/vmlinux: $(OBJECTS) $(obj)/piggy.o $(LIBGCC) FORCE + $(call if_changed,ld) + @: + +$(obj)/vmlinux.bin: vmlinux FORCE + $(call if_changed,objcopy) + +$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE + $(call if_changed,gzip) + +LDFLAGS_piggy.o := -r --format binary --oformat elf32-h8300-linux -T +OBJCOPYFLAGS := -O binary + +$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.gz FORCE + $(call if_changed,ld)
arch/h8300/boot/compressed/head.S new file +48 -0
48 lines not on this page · raw message
arch/h8300/boot/compressed/misc.c new file +74 -0
74 lines not on this page · raw message
arch/h8300/boot/compressed/vmlinux.lds new file +32 -0
@@ -0,0 +1,32 @@ +SECTIONS +{ + .text : + { + __stext = . ; + __text = .; + *(.text..startup) + *(.text) + __etext = . ; + } + + .rodata : + { + *(.rodata) + } + .data : + + { + __sdata = . ; + ___data_start = . ; + *(.data.*) + } + .bss : + { + . = ALIGN(0x4) ; + __sbss = . ; + *(.bss*) + . = ALIGN(0x4) ; + __ebss = . ; + __end = . ; + } +}
arch/h8300/boot/compressed/vmlinux.scr new file +9 -0
@@ -0,0 +1,9 @@ +SECTIONS +{ + .data : { + input_len = .; + LONG(input_data_end - input_data) input_data = .; + *(.data) + input_data_end = .; + } +}
arch/h8300/kernel/head_ram.S new file +60 -0
60 lines not on this page · raw message
arch/h8300/kernel/head_rom.S new file +108 -0
108 lines not on this page · raw message
arch/h8300/kernel/setup.c new file +172 -0
172 lines not on this page · raw message
Signature · 1 line
2.1.3
PATCH v2 5/15 h8300: Process and signal
In reply to Yoshinori Satocreate mode 100644 arch/h8300/kernel/process.c create mode 100644 arch/h8300/kernel/ptrace.c create mode 100644 arch/h8300/kernel/signal.c
arch/h8300/kernel/process.c new file +154 -0
@@ -0,0 +1,154 @@ +/* +* linux/arch/h8300/kernel/process.c +* +* Yoshinori Sato <[email protected]> +* +* Based on: +* +* linux/arch/m68knommu/kernel/process.c +* +* Copyright (C) 1998 D. Jeff Dionne <[email protected]>, +* Kenneth Albanowski <[email protected]>, +* The Silver Hammer Group, Ltd. +* +* linux/arch/m68k/kernel/process.c +* +* Copyright (C) 1995 Hamish Macdonald +* +* 68060 fixes by Jesper Skov +*/ + +/* +* This file handles the architecture-dependent parts of process handling.. +*/ + +#include <linux/errno.h> +#include <linux/module.h> +#include <linux/sched.h> +#include <linux/kernel.h> +#include <linux/mm.h> +#include <linux/smp.h> +#include <linux/stddef.h> +#include <linux/unistd.h> +#include <linux/ptrace.h> +#include <linux/user.h> +#include <linux/interrupt.h> +#include <linux/reboot.h> +#include <linux/fs.h> +#include <linux/slab.h> +#include <linux/rcupdate.h> + +#include <asm/uaccess.h> +#include <asm/traps.h> +#include <asm/setup.h> +#include <asm/pgtable.h> + +void (*pm_power_off)(void ) =NULL ; +EXPORT_SYMBOL (pm_power_off); + +asmlinkage void ret_from_fork(void); +asmlinkage void ret_from_kernel_thread(void); + +/* +* The idle loop on an H8/300.. +*/ +void arch_cpu_idle (void ) +{ +local_irq_enable (); + __asm__("sleep" ); +} + +void machine_restart (char *__unused) +{ +local_irq_disable (); + __asm__("jmp @@0" ); +} + +void machine_halt (void ) +{ +local_irq_disable (); + __asm__("sleep" ); +for (;;) + ; +} + +void machine_power_off (void ) +{ +local_irq_disable (); + __asm__("sleep" ); +for (;;) + ; +} + +void show_regs (struct pt_regs *regs) +{ +show_regs_print_info (KERN_DEFAULT ); + +printk ("\nPC: %08lx Status: %02x" , + regs->pc, regs->ccr); +printk ("\nORIG_ER0: %08lx ER0: %08lx ER1: %08lx" , + regs->orig_er0, regs->er0, regs->er1); +printk ("\nER2: %08lx ER3: %08lx ER4: %08lx ER5: %08lx" , + regs->er2, regs->er3, regs->er4, regs->er5); +printk ("\nER6' %08lx " , regs->er6); +if (user_mode (regs)) +printk ("USP: %08lx\n" ,rdusp ()); +else +printk ("\n" ); +} + +void flush_thread (void ) +{ +} + +int copy_thread (unsigned long clone_flags, +unsigned long usp,unsigned long topstk, +struct task_struct *p) +{ +struct pt_regs *childregs; + + childregs = (struct pt_regs *) (THREAD_SIZE +task_stack_page (p)) -1 ; + +if (unlikely (p->flags &PF_KTHREAD )) { +memset (childregs,0 ,sizeof (struct pt_regs )); + childregs->retpc = (unsigned long ) ret_from_kernel_thread; + childregs->er4 = topstk;/* arg */ + childregs->er5 = usp;/* fn */ + }else { + *childregs = *current_pt_regs (); + childregs->er0 =0 ; + childregs->retpc = (unsigned long ) ret_from_fork; + p->thread.usp = usp ?:rdusp (); + } + p->thread.ksp = (unsigned long )childregs; + +return 0 ; +} + +unsigned long thread_saved_pc (struct task_struct *tsk) +{ +return ((struct pt_regs *)tsk->thread.esp0)->pc; +} + +unsigned long get_wchan (struct task_struct *p) +{ +unsigned long fp, pc; +unsigned long stack_page; +int count =0 ; + +if (!p || p == current || p->state ==TASK_RUNNING ) +return 0 ; + + stack_page = (unsigned long )p; + fp = ((struct pt_regs *)p->thread.ksp)->er6; +do { +if (fp < stack_page+sizeof (struct thread_info ) || + fp >=8184 +stack_page) +return 0 ; + pc = ((unsigned long *)fp)[1 ]; +if (!in_sched_functions (pc)) +return pc; + fp = *(unsigned long *) fp; + }while (count++ <16 ); +return 0 ; +}
arch/h8300/kernel/ptrace.c new file +203 -0
203 lines not on this page · raw message
arch/h8300/kernel/signal.c new file +330 -0
330 lines not on this page · raw message
Signature · 1 line
2.1.3
PATCH v2 6/15 h8300 CPU depend helpers
In reply to Yoshinori Satocreate mode 100644 arch/h8300/kernel/cpu/Makefile create mode 100644 arch/h8300/kernel/cpu/h83069/Makefile create mode 100644 arch/h8300/kernel/cpu/h83069/setup.c create mode 100644 arch/h8300/kernel/cpu/h8s2678/Makefile create mode 100644 arch/h8300/kernel/cpu/h8s2678/setup.c create mode 100644 arch/h8300/kernel/cpu/irq_h.c create mode 100644 arch/h8300/kernel/cpu/irq_s.c create mode 100644 arch/h8300/kernel/cpu/ptrace_h.c create mode 100644 arch/h8300/kernel/cpu/ptrace_s.c
arch/h8300/kernel/cpu/Makefile new file +5 -0
@@ -0,0 +1,5 @@ +obj-$(CONFIG_CPU_H8300H) += ptrace_h.o irq_h.o +obj-$(CONFIG_CPU_H8S) += ptrace_s.o irq_s.o +obj-$(CONFIG_H83069) += h83069/ +obj-$(CONFIG_H8S2678) += h8s2678/ +
arch/h8300/kernel/cpu/h83069/Makefile new file +1 -0
@@ -0,0 +1 @@ +obj-y = setup.o
arch/h8300/kernel/cpu/h83069/setup.c new file +202 -0
202 lines not on this page · raw message
arch/h8300/kernel/cpu/h8s2678/Makefile new file +1 -0
@@ -0,0 +1 @@ +obj-y = setup.o
arch/h8300/kernel/cpu/h8s2678/setup.c new file +161 -0
161 lines not on this page · raw message
arch/h8300/kernel/cpu/irq_h.c new file +62 -0
62 lines not on this page · raw message
arch/h8300/kernel/cpu/irq_s.c new file +70 -0
70 lines not on this page · raw message
arch/h8300/kernel/cpu/ptrace_h.c new file +256 -0
256 lines not on this page · raw message
arch/h8300/kernel/cpu/ptrace_s.c new file +42 -0
42 lines not on this page · raw message
Signature · 1 line
2.1.3
PATCH v2 7/15 h8300: miscellaneous functions
In reply to Yoshinori Satocreate mode 100644 arch/h8300/kernel/asm-offsets.c create mode 100644 arch/h8300/kernel/h8300_ksyms.c create mode 100644 arch/h8300/kernel/module.c create mode 100644 arch/h8300/kernel/sim-console.c create mode 100644 arch/h8300/kernel/syscalls.c
arch/h8300/kernel/asm-offsets.c new file +60 -0
@@ -0,0 +1,60 @@ +/* +* This program is used to generate definitions needed by +* assembly language modules. +* +* We use the technique used in the OSF Mach kernel code: +* generate asm statements containing #defines, +* compile this file to assembler, and then extract the +* #defines from the assembly-language output. +*/ + +#include <linux/stddef.h> +#include <linux/sched.h> +#include <linux/kernel_stat.h> +#include <linux/ptrace.h> +#include <linux/hardirq.h> +#include <linux/kbuild.h> +#include <asm/irq.h> +#include <asm/ptrace.h> + +int main (void ) +{ +/* offsets into the task struct */ +DEFINE (TASK_STATE , offsetof(struct task_struct , state)); +DEFINE (TASK_FLAGS , offsetof(struct task_struct , flags)); +DEFINE (TASK_PTRACE , offsetof(struct task_struct , ptrace)); +DEFINE (TASK_BLOCKED , offsetof(struct task_struct , blocked)); +DEFINE (TASK_THREAD , offsetof(struct task_struct , thread)); +DEFINE (TASK_THREAD_INFO , offsetof(struct task_struct , stack)); +DEFINE (TASK_MM , offsetof(struct task_struct , mm)); +DEFINE (TASK_ACTIVE_MM , offsetof(struct task_struct , active_mm)); + +/* offsets into the irq_cpustat_t struct */ +DEFINE (CPUSTAT_SOFTIRQ_PENDING , offsetof(irq_cpustat_t , __softirq_pending)); + +/* offsets into the thread struct */ +DEFINE (THREAD_KSP , offsetof(struct thread_struct , ksp)); +DEFINE (THREAD_USP , offsetof(struct thread_struct , usp)); +DEFINE (THREAD_CCR , offsetof(struct thread_struct , ccr)); + +/* offsets into the pt_regs struct */ +DEFINE (LER0 , offsetof(struct pt_regs , er0) -sizeof (long )); +DEFINE (LER1 , offsetof(struct pt_regs , er1) -sizeof (long )); +DEFINE (LER2 , offsetof(struct pt_regs , er2) -sizeof (long )); +DEFINE (LER3 , offsetof(struct pt_regs , er3) -sizeof (long )); +DEFINE (LER4 , offsetof(struct pt_regs , er4) -sizeof (long )); +DEFINE (LER5 , offsetof(struct pt_regs , er5) -sizeof (long )); +DEFINE (LER6 , offsetof(struct pt_regs , er6) -sizeof (long )); +DEFINE (LORIG , offsetof(struct pt_regs , orig_er0) -sizeof (long )); +DEFINE (LSP , offsetof(struct pt_regs , sp) -sizeof (long )); +DEFINE (LCCR , offsetof(struct pt_regs , ccr) -sizeof (long )); +DEFINE (LVEC , offsetof(struct pt_regs , vector) -sizeof (long )); +#if defined(CONFIG_CPU_H8S ) +DEFINE (LEXR , offsetof(struct pt_regs , exr) -sizeof (long )); +#endif +DEFINE (LRET , offsetof(struct pt_regs , pc) -sizeof (long )); + +DEFINE (PT_PTRACED ,PT_PTRACED ); + +return 0 ; +}
arch/h8300/kernel/h8300_ksyms.c new file +28 -0
@@ -0,0 +1,28 @@ +#include <linux/module.h> +#include <linux/linkage.h> + +/* +* libgcc functions - functions that are used internally by the +* compiler... (prototypes are not correct though, but that +* doesn't really matter since they're not versioned). +*/ +asmlinkage long long __ashldi3 (long long ,int ); +asmlinkage long long __ashrdi3 (long long ,int ); +asmlinkage long long __lshrdi3 (long long ,int ); +asmlinkage long __divsi3 (long ,long ); +asmlinkage long __modsi3 (long ,long ); +asmlinkage unsigned long __umodsi3 (unsigned long ,unsigned long ); +asmlinkage long long __muldi3 (long long ,long long ); +asmlinkage long __mulsi3 (long ,long ); +asmlinkage long __udivsi3 (long ,long ); + +/* gcc lib functions */ +EXPORT_SYMBOL (__ashldi3); +EXPORT_SYMBOL (__ashrdi3); +EXPORT_SYMBOL (__lshrdi3); +EXPORT_SYMBOL (__divsi3); +EXPORT_SYMBOL (__modsi3); +EXPORT_SYMBOL (__umodsi3); +EXPORT_SYMBOL (__muldi3); +EXPORT_SYMBOL (__mulsi3); +EXPORT_SYMBOL (__udivsi3);
arch/h8300/kernel/module.c new file +70 -0
70 lines not on this page · raw message
arch/h8300/kernel/sim-console.c new file +79 -0
79 lines not on this page · raw message
arch/h8300/kernel/syscalls.c new file +14 -0
@@ -0,0 +1,14 @@ +#include <linux/syscalls.h> +#include <linux/signal.h> +#include <linux/unistd.h> + +#undef __SYSCALL +#define __SYSCALL (nr, call) [nr] = (call), + +#define sys_mmap2 sys_mmap_pgoff + +asmlinkage int sys_rt_sigreturn(void); + +void *_sys_call_table[__NR_syscalls] = { +#include <asm/unistd.h> +};
Signature · 1 line
2.1.3
PATCH v2 8/15 h8300: Memory management
In reply to Yoshinori Satocreate mode 100644 arch/h8300/mm/Makefile create mode 100644 arch/h8300/mm/fault.c create mode 100644 arch/h8300/mm/init.c create mode 100644 arch/h8300/mm/kmap.c create mode 100644 arch/h8300/mm/memory.c
arch/h8300/mm/Makefile new file +5 -0
@@ -0,0 +1,5 @@ +# +# Makefile for the linux h8300-specific parts of the memory manager. +# + +obj-y := init.o fault.o memory.o kmap.o
arch/h8300/mm/fault.c new file +58 -0
58 lines not on this page · raw message
arch/h8300/mm/init.c new file +153 -0
153 lines not on this page · raw message
arch/h8300/mm/kmap.c new file +58 -0
58 lines not on this page · raw message
arch/h8300/mm/memory.c new file +54 -0
54 lines not on this page · raw message
Signature · 1 line
2.1.3
PATCH v2 9/15 h8300: library functions
In reply to Yoshinori Satocreate mode 100644 arch/h8300/lib/Makefile create mode 100644 arch/h8300/lib/abs.S create mode 100644 arch/h8300/lib/ashldi3.c create mode 100644 arch/h8300/lib/ashrdi3.c create mode 100644 arch/h8300/lib/checksum.c create mode 100644 arch/h8300/lib/libgcc.h create mode 100644 arch/h8300/lib/lshrdi3.c create mode 100644 arch/h8300/lib/memcpy.S create mode 100644 arch/h8300/lib/memset.S create mode 100644 arch/h8300/lib/moddivsi3.S create mode 100644 arch/h8300/lib/modsi3.S create mode 100644 arch/h8300/lib/muldi3.c create mode 100644 arch/h8300/lib/mulsi3.S create mode 100644 arch/h8300/lib/strncpy.S create mode 100644 arch/h8300/lib/udivsi3.S
arch/h8300/lib/Makefile new file +7 -0
@@ -0,0 +1,7 @@ +# +# Makefile for H8/300-specific library files.. +# + +lib-y = checksum.o memcpy.o memset.o abs.o strncpy.o \ + mulsi3.o udivsi3.o muldi3.o moddivsi3.o \ + ashldi3.o lshrdi3.o ashrdi3.o
arch/h8300/lib/abs.S new file +20 -0
@@ -0,0 +1,20 @@ +;;; abs.S + +#include <asm/linkage.h> + +#if defined(CONFIG_CPU_H8300H) + .h8300h +#endif +#if defined(CONFIG_CPU_H8S) + .h8300s +#endif + .text +.global _abs + +;;; int abs(int n) +_abs: + mov.l er0,er0 + bpl 1f + neg.l er0 +1: + rts
arch/h8300/lib/ashldi3.c new file +58 -0
58 lines not on this page · raw message
arch/h8300/lib/ashrdi3.c new file +59 -0
59 lines not on this page · raw message
arch/h8300/lib/checksum.c new file +167 -0
167 lines not on this page · raw message
arch/h8300/lib/libgcc.h new file +76 -0
76 lines not on this page · raw message
arch/h8300/lib/lshrdi3.c new file +58 -0
58 lines not on this page · raw message
arch/h8300/lib/memcpy.S new file +85 -0
85 lines not on this page · raw message
arch/h8300/lib/memset.S new file +69 -0
69 lines not on this page · raw message
arch/h8300/lib/moddivsi3.S new file +106 -0
106 lines not on this page · raw message
arch/h8300/lib/modsi3.S new file +106 -0
106 lines not on this page · raw message
arch/h8300/lib/muldi3.c new file +76 -0
76 lines not on this page · raw message
arch/h8300/lib/mulsi3.S new file +67 -0
67 lines not on this page · raw message
arch/h8300/lib/strncpy.S new file +34 -0
@@ -0,0 +1,34 @@ +;;; strncpy.S + +#include <asm/linkage.h> + + .text +.global strncpy_from_user + +;;; long strncpy_from_user(void *to, void *from, size_t n) +strncpy_from_user: + mov.l er2,er2 + bne 1f + sub.l er0,er0 + rts +1: + mov.l er4,@-sp + sub.l er3,er3 +2: + mov.b @er1+,r4l + mov.b r4l,@er0 + adds #1,er0 + beq 3f + inc.l #1,er3 + dec.l #1,er2 + bne 2b +3: + dec.l #1,er2 +4: + mov.b r4l,@er0 + adds #1,er0 + dec.l #1,er2 + bne 4b + mov.l er3,er0 + mov.l @sp+,er4 + rts
arch/h8300/lib/udivsi3.S new file +107 -0
107 lines not on this page · raw message
Signature · 1 line
2.1.3
PATCH v2 10/15 h8300: Build scripts
In reply to Yoshinori Satocreate 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
arch/h8300/Kconfig new file +123 -0
@@ -0,0 +1,123 @@ +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 ARCH_WANT_FRAME_POINTER + select GENERIC_CPU_DEVICES + select MODULES_USE_ELF_RELA + select GENERIC_CLOCKEVENTS + select CLKDEV_LOOKUP + select COMMON_CLK + select HAVE_ARCH_TRACEHOOK + +config MMU + bool + default n + +config SWAP + bool + default n + +config ZONE_DMA + bool + default y + +config FPU + bool + default n + +config RWSEM_GENERIC_SPINLOCK + bool + default y + +config RWSEM_XCHGADD_ALGORITHM + bool + default n + +config ARCH_HAS_ILOG2_U32 + bool + default n + +config ARCH_HAS_ILOG2_U64 + bool + default n + +config GENERIC_HWEIGHT + bool + default y + +config GENERIC_CALIBRATE_DELAY + bool + default y + +config GENERIC_BUG + bool + depends on BUG + +config TIME_LOW_RES + bool + default y + +config NO_IOPORT + def_bool y + +config NO_DMA + def_bool y + +config ISA + bool + default y + +config PCI + bool + default n + +config HZ + int + default 100 + +config NR_CPUS + int + default 1 + +config NO_IOPORT_MAP + def_bool y + +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"
arch/h8300/Kconfig.cpu new file +136 -0
136 lines not on this page · raw message
arch/h8300/Kconfig.debug new file +65 -0
65 lines not on this page · raw message
arch/h8300/Makefile new file +45 -0
45 lines not on this page · raw message
arch/h8300/kernel/Makefile new file +16 -0
@@ -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 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
arch/h8300/kernel/vmlinux.lds.S new file +85 -0
85 lines not on this page · raw message
Signature · 1 line
2.1.3
PATCH v2 11/15 h8300: clock driver
In reply to Yoshinori Satocreate mode 100644 drivers/clk/h8300/Makefile create mode 100644 drivers/clk/h8300/clk-h83069.c create mode 100644 drivers/clk/h8300/clk-h8s2678.c
drivers/clk/Makefile +1 -0
@@ -68,3 +68,4 @@ obj-$(CONFIG_ARCH_U8500) += ux500/ obj-$(CONFIG_COMMON_CLK_VERSATILE) += versatile/ obj-$(CONFIG_X86) += x86/ obj-$(CONFIG_ARCH_ZYNQ) += zynq/ +obj-$(CONFIG_H8300) += h8300/
drivers/clk/h8300/Makefile new file +2 -0
@@ -0,0 +1,2 @@ +obj-$(CONFIG_H83069) += clk-h83069.o +obj-$(CONFIG_H8S2678) += clk-h8s2678.o
drivers/clk/h8300/clk-h83069.c new file +73 -0
73 lines not on this page · raw message
drivers/clk/h8300/clk-h8s2678.c new file +165 -0
165 lines not on this page · raw message
include/linux/clk-provider.h +12 -0
@@ -635,6 +635,18 @@ static inline void clk_writel(u32 val, u32 __iomem *reg) iowrite32be(val, reg); } +#elif IS_ENABLED(CONFIG_H8300) + +static inline u32 clk_readl (u32 __iomem *reg) +{ +return readb (reg); +} + +static inline void clk_writel (u32 val,u32 __iomem *reg) +{ +writeb (val, reg); +} +#else /* platform dependent I/O accessors */ static inline u32 clk_readl (u32 __iomem *reg)
Signature · 1 line
2.1.3
PATCH v2 12/15 h8300: clocksource
In reply to Yoshinori Satocreate mode 100644 drivers/clocksource/h8300_timer16.c create mode 100644 drivers/clocksource/h8300_timer8.c create mode 100644 drivers/clocksource/h8300_tpu.c
drivers/clocksource/Kconfig +9 -0
@@ -229,4 +229,13 @@ config CLKSRC_MIPS_GIC depends on MIPS_GIC select CLKSRC_OF +config H8300_TMR8 + bool + +config H8300_TMR16 + bool + +config H8300_TPU + bool + endmenu
drivers/clocksource/Makefile +3 -0
@@ -48,3 +48,6 @@ obj-$(CONFIG_ARCH_KEYSTONE) += timer-keystone.o obj-$(CONFIG_ARCH_INTEGRATOR_AP) += timer-integrator-ap.o obj-$(CONFIG_CLKSRC_VERSATILE) += versatile.o obj-$(CONFIG_CLKSRC_MIPS_GIC) += mips-gic-timer.o +obj-$(CONFIG_H8300_TMR8) += h8300_timer8.o +obj-$(CONFIG_H8300_TMR16) += h8300_timer16.o +obj-$(CONFIG_H8300_TPU) += h8300_tpu.o
drivers/clocksource/h8300_timer16.c new file +335 -0
335 lines not on this page · raw message
drivers/clocksource/h8300_timer8.c new file +400 -0
400 lines not on this page · raw message
drivers/clocksource/h8300_tpu.c new file +205 -0
205 lines not on this page · raw message
Signature · 1 line
2.1.3
PATCH v2 13/15 h8300: configs
In reply to Yoshinori Satocreate mode 100644 arch/h8300/configs/h8300h-sim_defconfig create mode 100644 arch/h8300/configs/h8s-sim_defconfig
arch/h8300/configs/h8300h-sim_defconfig new file +54 -0
@@ -0,0 +1,54 @@ +# CONFIG_LOCALVERSION_AUTO is not set +# CONFIG_USELIB is not set +# CONFIG_INIT_FALLBACK is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +# CONFIG_UID16 is not set +# CONFIG_SYSFS_SYSCALL is not set +# CONFIG_KALLSYMS is not set +# CONFIG_BASE_FULL is not set +# CONFIG_FUTEX is not set +# CONFIG_EPOLL is not set +# CONFIG_SIGNALFD is not set +# CONFIG_TIMERFD is not set +# CONFIG_EVENTFD is not set +# CONFIG_AIO is not set +# CONFIG_ADVISE_SYSCALLS is not set +CONFIG_EMBEDDED=y +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_COMPAT_BRK is not set +CONFIG_SLOB=y +CONFIG_MODULES=y +# CONFIG_BLOCK is not set +CONFIG_H8300H_SIM=y +CONFIG_CPU_CLOCK=20000000 +CONFIG_ROMKERNEL=y +# CONFIG_BINFMT_SCRIPT is not set +CONFIG_BINFMT_FLAT=y +# CONFIG_COREDUMP is not set +# CONFIG_UEVENT_HELPER is not set +# CONFIG_STANDALONE is not set +# CONFIG_PREVENT_FIRMWARE_BUILD is not set +# CONFIG_FW_LOADER is not set +# CONFIG_ALLOW_DEV_COREDUMP is not set +# CONFIG_INPUT is not set +# CONFIG_SERIO is not set +# CONFIG_VT is not set +# CONFIG_UNIX98_PTYS is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_DEVKMEM is not set +CONFIG_SERIAL_SH_SCI=y +CONFIG_SERIAL_SH_SCI_CONSOLE=y +# CONFIG_HW_RANDOM is not set +# CONFIG_HWMON is not set +# CONFIG_USB_SUPPORT is not set +# CONFIG_IOMMU_SUPPORT is not set +# CONFIG_FILE_LOCKING is not set +# CONFIG_DNOTIFY is not set +# CONFIG_INOTIFY_USER is not set +# CONFIG_PROC_FS is not set +# CONFIG_SYSFS is not set +# CONFIG_MISC_FILESYSTEMS is not set +CONFIG_DEBUG_INFO=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_CRC32 is not set
arch/h8300/configs/h8s-sim_defconfig new file +56 -0
56 lines not on this page · raw message
Signature · 1 line
2.1.3
PATCH v2 14/15 serial: Add h8300
In reply to Yoshinori Satodrivers/tty/serial/Kconfig +1 -1
@@ -747,7 +747,7 @@ config SERIAL_IP22_ZILOG_CONSOLE config SERIAL_SH_SCI tristate "SuperH SCI(F) serial port support" - depends on SUPERH || ARCH_SHMOBILE || COMPILE_TEST + depends on SUPERH || ARCH_SHMOBILE || COMPILE_TEST || H8300 select SERIAL_CORE config SERIAL_SH_SCI_NR_UARTS
Signature · 1 line
2.1.3
PATCH v2 15/15 Add ELF machine
In reply to Yoshinori Satoinclude/uapi/linux/elf-em.h +1 -0
@@ -25,6 +25,7 @@#define EM_ARM 40/* ARM 32 bit */ #define EM_SH 42/* SuperH */ #define EM_SPARCV9 43/* SPARC v9 64-bit */ +#define EM_H8_300 46/* Renesas H8/300 */ #define EM_IA_64 50/* HP/Intel IA-64 */ #define EM_X86_64 62/* AMD x86-64 */ #define EM_S390 22/* IBM S/390 */
Signature · 1 line
2.1.3