Commit 2d2da475 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'm68knommu-for-v5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu

Pull m68knommu updates from Greg Ungerer:
 "A collection of changes to add elf-fdpic loader support for m68k.

  Also a collection of various fixes. They include typo corrections,
  undefined symbol compilation fixes, removal of the ISA_DMA_API support
  and removal of unused code.

  Summary:

   - correctly set up ZERO_PAGE pointer

   - drop ISA_DMA_API support

   - fix comment typos

   - fixes for undefined symbols

   - remove unused code and variables

   - elf-fdpic loader support for m68k"

* tag 'm68knommu-for-v5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu:
  m68knommu: fix 68000 CPU link with no platform selected
  m68k: removed unused "mach_get_ss"
  m68knommu: fix undefined reference to `mach_get_rtc_pll'
  m68knommu: fix undefined reference to `_init_sp'
  m68knommu: allow elf_fdpic loader to be selected
  m68knommu: add definitions to support elf_fdpic program loader
  m68knommu: implement minimal regset support
  m68knommu: use asm-generic/mmu.h for nommu setups
  m68k: fix typos in comments
  m68k: coldfire: drop ISA_DMA_API support
  m68knommu: set ZERO_PAGE() to the allocated zeroed page
parents b00ed48b 6b8be804
...@@ -56,16 +56,6 @@ config ATARI_ROM_ISA ...@@ -56,16 +56,6 @@ config ATARI_ROM_ISA
The only driver currently using this adapter is the EtherNEC The only driver currently using this adapter is the EtherNEC
driver for RTL8019AS based NE2000 compatible network cards. driver for RTL8019AS based NE2000 compatible network cards.
config GENERIC_ISA_DMA
def_bool ISA
source "drivers/zorro/Kconfig" source "drivers/zorro/Kconfig"
endif endif
if COLDFIRE
config ISA_DMA_API
def_bool !M5272
endif
...@@ -37,7 +37,7 @@ endchoice ...@@ -37,7 +37,7 @@ endchoice
if M68KCLASSIC if M68KCLASSIC
config M68000 config M68000
bool def_bool y
depends on !MMU depends on !MMU
select CPU_HAS_NO_BITFIELDS select CPU_HAS_NO_BITFIELDS
select CPU_HAS_NO_CAS select CPU_HAS_NO_CAS
......
...@@ -352,6 +352,7 @@ comment "Machine Options" ...@@ -352,6 +352,7 @@ comment "Machine Options"
config UBOOT config UBOOT
bool "Support for U-Boot command line parameters" bool "Support for U-Boot command line parameters"
depends on COLDFIRE
help help
If you say Y here kernel will try to collect command If you say Y here kernel will try to collect command
line parameters from the initial u-boot stack. line parameters from the initial u-boot stack.
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1 asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
obj-$(CONFIG_COLDFIRE) += cache.o clk.o device.o dma.o entry.o vectors.o obj-$(CONFIG_COLDFIRE) += cache.o clk.o device.o entry.o vectors.o
obj-$(CONFIG_M5206) += m5206.o intc.o reset.o obj-$(CONFIG_M5206) += m5206.o intc.o reset.o
obj-$(CONFIG_M5206e) += m5206.o intc.o reset.o obj-$(CONFIG_M5206e) += m5206.o intc.o reset.o
obj-$(CONFIG_M520x) += m520x.o intc-simr.o reset.o obj-$(CONFIG_M520x) += m520x.o intc-simr.o reset.o
......
// SPDX-License-Identifier: GPL-2.0
/***************************************************************************/
/*
* dma.c -- Freescale ColdFire DMA support
*
* Copyright (C) 2007, Greg Ungerer (gerg@snapgear.com)
*/
/***************************************************************************/
#include <linux/kernel.h>
#include <linux/module.h>
#include <asm/dma.h>
#include <asm/coldfire.h>
#include <asm/mcfsim.h>
#include <asm/mcfdma.h>
/***************************************************************************/
/*
* DMA channel base address table.
*/
unsigned int dma_base_addr[MAX_M68K_DMA_CHANNELS] = {
#ifdef MCFDMA_BASE0
MCFDMA_BASE0,
#endif
#ifdef MCFDMA_BASE1
MCFDMA_BASE1,
#endif
#ifdef MCFDMA_BASE2
MCFDMA_BASE2,
#endif
#ifdef MCFDMA_BASE3
MCFDMA_BASE3,
#endif
};
EXPORT_SYMBOL(dma_base_addr);
unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS];
EXPORT_SYMBOL(dma_device_address);
/***************************************************************************/
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
unsigned char mcf_irq2imr[NR_IRQS]; unsigned char mcf_irq2imr[NR_IRQS];
/* /*
* Define the miniumun and maximum external interrupt numbers. * Define the minimum and maximum external interrupt numbers.
* This is also used as the "level" interrupt numbers. * This is also used as the "level" interrupt numbers.
*/ */
#define EIRQ1 25 #define EIRQ1 25
......
...@@ -532,7 +532,7 @@ int clock_pll(int fsys, int flags) ...@@ -532,7 +532,7 @@ int clock_pll(int fsys, int flags)
writel(readl(MCF_SDRAMC_SDCR) | MCF_SDRAMC_SDCR_CKE, writel(readl(MCF_SDRAMC_SDCR) | MCF_SDRAMC_SDCR_CKE,
MCF_SDRAMC_SDCR); MCF_SDRAMC_SDCR);
/* Errata - workaround for SDRAM opeartion after exiting LIMP mode */ /* Errata - workaround for SDRAM operation after exiting LIMP mode */
writel(MCF_SDRAMC_REFRESH, MCF_SDRAMC_LIMP_FIX); writel(MCF_SDRAMC_REFRESH, MCF_SDRAMC_LIMP_FIX);
/* wait for DQS logic to relock */ /* wait for DQS logic to relock */
......
...@@ -31,7 +31,7 @@ static struct pci_bus *rootbus; ...@@ -31,7 +31,7 @@ static struct pci_bus *rootbus;
static unsigned long iospace; static unsigned long iospace;
/* /*
* We need to be carefull probing on bus 0 (directly connected to host * We need to be careful probing on bus 0 (directly connected to host
* bridge). We should only access the well defined possible devices in * bridge). We should only access the well defined possible devices in
* use, ignore aliases and the like. * use, ignore aliases and the like.
*/ */
......
...@@ -240,12 +240,6 @@ static int hp300_hwclk(int op, struct rtc_time *t) ...@@ -240,12 +240,6 @@ static int hp300_hwclk(int op, struct rtc_time *t)
return 0; return 0;
} }
static unsigned int hp300_get_ss(void)
{
return hp300_rtc_read(RTC_REG_SEC1) * 10 +
hp300_rtc_read(RTC_REG_SEC2);
}
static void __init hp300_init_IRQ(void) static void __init hp300_init_IRQ(void)
{ {
} }
...@@ -256,7 +250,6 @@ void __init config_hp300(void) ...@@ -256,7 +250,6 @@ void __init config_hp300(void)
mach_init_IRQ = hp300_init_IRQ; mach_init_IRQ = hp300_init_IRQ;
mach_get_model = hp300_get_model; mach_get_model = hp300_get_model;
mach_hwclk = hp300_hwclk; mach_hwclk = hp300_hwclk;
mach_get_ss = hp300_get_ss;
mach_reset = hp300_reset; mach_reset = hp300_reset;
#ifdef CONFIG_HEARTBEAT #ifdef CONFIG_HEARTBEAT
mach_heartbeat = hp300_pulse; mach_heartbeat = hp300_pulse;
......
This diff is collapsed.
...@@ -60,6 +60,13 @@ typedef struct user_m68kfp_struct elf_fpregset_t; ...@@ -60,6 +60,13 @@ typedef struct user_m68kfp_struct elf_fpregset_t;
is actually used on ASV. */ is actually used on ASV. */
#define ELF_PLAT_INIT(_r, load_addr) _r->a1 = 0 #define ELF_PLAT_INIT(_r, load_addr) _r->a1 = 0
#define ELF_FDPIC_PLAT_INIT(_r, _exec_map_addr, _interp_map_addr, dynamic_addr) \
do { \
(_r)->d3 = _exec_map_addr; \
(_r)->d4 = _interp_map_addr; \
(_r)->d5 = dynamic_addr; \
} while(0)
#if defined(CONFIG_SUN3) || defined(CONFIG_COLDFIRE) #if defined(CONFIG_SUN3) || defined(CONFIG_COLDFIRE)
#define ELF_EXEC_PAGESIZE 8192 #define ELF_EXEC_PAGESIZE 8192
#else #else
...@@ -114,4 +121,6 @@ typedef struct user_m68kfp_struct elf_fpregset_t; ...@@ -114,4 +121,6 @@ typedef struct user_m68kfp_struct elf_fpregset_t;
#define ELF_PLATFORM (NULL) #define ELF_PLATFORM (NULL)
#define ELF_FDPIC_CORE_EFLAGS 0
#endif #endif
...@@ -19,7 +19,6 @@ extern void (*mach_get_model) (char *model); ...@@ -19,7 +19,6 @@ extern void (*mach_get_model) (char *model);
extern void (*mach_get_hardware_list) (struct seq_file *m); extern void (*mach_get_hardware_list) (struct seq_file *m);
/* machine dependent timer functions */ /* machine dependent timer functions */
extern int (*mach_hwclk)(int, struct rtc_time*); extern int (*mach_hwclk)(int, struct rtc_time*);
extern unsigned int (*mach_get_ss)(void);
extern int (*mach_get_rtc_pll)(struct rtc_pll_info *); extern int (*mach_get_rtc_pll)(struct rtc_pll_info *);
extern int (*mach_set_rtc_pll)(struct rtc_pll_info *); extern int (*mach_set_rtc_pll)(struct rtc_pll_info *);
extern void (*mach_reset)( void ); extern void (*mach_reset)( void );
......
...@@ -6,9 +6,7 @@ ...@@ -6,9 +6,7 @@
/* Default "unsigned long" context */ /* Default "unsigned long" context */
typedef unsigned long mm_context_t; typedef unsigned long mm_context_t;
#else #else
typedef struct { #include <asm-generic/mmu.h>
unsigned long end_brk;
} mm_context_t;
#endif #endif
#endif #endif
...@@ -42,7 +42,8 @@ extern void paging_init(void); ...@@ -42,7 +42,8 @@ extern void paging_init(void);
* ZERO_PAGE is a global shared page that is always zero: used * ZERO_PAGE is a global shared page that is always zero: used
* for zero-mapped memory areas etc.. * for zero-mapped memory areas etc..
*/ */
#define ZERO_PAGE(vaddr) (virt_to_page(0)) extern void *empty_zero_page;
#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page))
/* /*
* All 32bit addresses are effectively valid for vmalloc... * All 32bit addresses are effectively valid for vmalloc...
......
...@@ -74,7 +74,12 @@ struct switch_stack { ...@@ -74,7 +74,12 @@ struct switch_stack {
#define PTRACE_GET_THREAD_AREA 25 #define PTRACE_GET_THREAD_AREA 25
#define PTRACE_GETFDPIC 31
#define PTRACE_SINGLEBLOCK 33 /* resume execution until next branch */ #define PTRACE_SINGLEBLOCK 33 /* resume execution until next branch */
#define PTRACE_GETFDPIC_EXEC 0
#define PTRACE_GETFDPIC_INTERP 1
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#endif /* _UAPI_M68K_PTRACE_H */ #endif /* _UAPI_M68K_PTRACE_H */
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
#include <linux/ptrace.h> #include <linux/ptrace.h>
#include <linux/user.h> #include <linux/user.h>
#include <linux/signal.h> #include <linux/signal.h>
#include <linux/regset.h>
#include <linux/elf.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <asm/page.h> #include <asm/page.h>
...@@ -284,3 +286,59 @@ asmlinkage void syscall_trace_leave(void) ...@@ -284,3 +286,59 @@ asmlinkage void syscall_trace_leave(void)
if (test_thread_flag(TIF_SYSCALL_TRACE)) if (test_thread_flag(TIF_SYSCALL_TRACE))
ptrace_report_syscall_exit(task_pt_regs(current), 0); ptrace_report_syscall_exit(task_pt_regs(current), 0);
} }
#if defined(CONFIG_BINFMT_ELF_FDPIC) && defined(CONFIG_ELF_CORE)
/*
* Currently the only thing that needs to use regsets for m68k is the
* coredump support of the elf_fdpic loader. Implement the minimum
* definitions required for that.
*/
static int m68k_regset_get(struct task_struct *target,
const struct user_regset *regset,
struct membuf to)
{
struct pt_regs *ptregs = task_pt_regs(target);
u32 uregs[ELF_NGREG];
ELF_CORE_COPY_REGS(uregs, ptregs);
return membuf_write(&to, uregs, sizeof(uregs));
}
enum m68k_regset {
REGSET_GPR,
#ifdef CONFIG_FPU
REGSET_FPU,
#endif
};
static const struct user_regset m68k_user_regsets[] = {
[REGSET_GPR] = {
.core_note_type = NT_PRSTATUS,
.n = ELF_NGREG,
.size = sizeof(u32),
.align = sizeof(u16),
.regset_get = m68k_regset_get,
},
#ifdef CONFIG_FPU
[REGSET_FPU] = {
.core_note_type = NT_PRFPREG,
.n = sizeof(struct user_m68kfp_struct) / sizeof(u32),
.size = sizeof(u32),
.align = sizeof(u32),
}
#endif /* CONFIG_FPU */
};
static const struct user_regset_view user_m68k_view = {
.name = "m68k",
.e_machine = EM_68K,
.ei_osabi = ELF_OSABI,
.regsets = m68k_user_regsets,
.n = ARRAY_SIZE(m68k_user_regsets)
};
const struct user_regset_view *task_user_regset_view(struct task_struct *task)
{
return &user_m68k_view;
}
#endif /* CONFIG_BINFMT_ELF_FDPIC && CONFIG_ELF_CORE */
...@@ -87,15 +87,6 @@ void (*mach_sched_init) (void) __initdata = NULL; ...@@ -87,15 +87,6 @@ void (*mach_sched_init) (void) __initdata = NULL;
void (*mach_init_IRQ) (void) __initdata = NULL; void (*mach_init_IRQ) (void) __initdata = NULL;
void (*mach_get_model) (char *model); void (*mach_get_model) (char *model);
void (*mach_get_hardware_list) (struct seq_file *m); void (*mach_get_hardware_list) (struct seq_file *m);
/* machine dependent timer functions */
int (*mach_hwclk) (int, struct rtc_time*);
EXPORT_SYMBOL(mach_hwclk);
unsigned int (*mach_get_ss)(void);
int (*mach_get_rtc_pll)(struct rtc_pll_info *);
int (*mach_set_rtc_pll)(struct rtc_pll_info *);
EXPORT_SYMBOL(mach_get_ss);
EXPORT_SYMBOL(mach_get_rtc_pll);
EXPORT_SYMBOL(mach_set_rtc_pll);
void (*mach_reset)( void ); void (*mach_reset)( void );
void (*mach_halt)( void ); void (*mach_halt)( void );
void (*mach_power_off)( void ); void (*mach_power_off)( void );
......
...@@ -50,7 +50,6 @@ char __initdata command_line[COMMAND_LINE_SIZE]; ...@@ -50,7 +50,6 @@ char __initdata command_line[COMMAND_LINE_SIZE];
/* machine dependent timer functions */ /* machine dependent timer functions */
void (*mach_sched_init)(void) __initdata = NULL; void (*mach_sched_init)(void) __initdata = NULL;
int (*mach_hwclk) (int, struct rtc_time*);
/* machine dependent reboot functions */ /* machine dependent reboot functions */
void (*mach_reset)(void); void (*mach_reset)(void);
......
...@@ -63,6 +63,15 @@ void timer_heartbeat(void) ...@@ -63,6 +63,15 @@ void timer_heartbeat(void)
#endif /* CONFIG_HEARTBEAT */ #endif /* CONFIG_HEARTBEAT */
#ifdef CONFIG_M68KCLASSIC #ifdef CONFIG_M68KCLASSIC
/* machine dependent timer functions */
int (*mach_hwclk) (int, struct rtc_time*);
EXPORT_SYMBOL(mach_hwclk);
int (*mach_get_rtc_pll)(struct rtc_pll_info *);
int (*mach_set_rtc_pll)(struct rtc_pll_info *);
EXPORT_SYMBOL(mach_get_rtc_pll);
EXPORT_SYMBOL(mach_set_rtc_pll);
#if !IS_BUILTIN(CONFIG_RTC_DRV_GENERIC) #if !IS_BUILTIN(CONFIG_RTC_DRV_GENERIC)
void read_persistent_clock64(struct timespec64 *ts) void read_persistent_clock64(struct timespec64 *ts)
{ {
......
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
#include <asm/pgalloc.h> #include <asm/pgalloc.h>
#include <asm/machdep.h> #include <asm/machdep.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/dma.h>
#ifdef CONFIG_ATARI #ifdef CONFIG_ATARI
#include <asm/atari_stram.h> #include <asm/atari_stram.h>
#endif #endif
......
...@@ -41,7 +41,6 @@ static void q40_get_model(char *model); ...@@ -41,7 +41,6 @@ static void q40_get_model(char *model);
extern void q40_sched_init(void); extern void q40_sched_init(void);
static int q40_hwclk(int, struct rtc_time *); static int q40_hwclk(int, struct rtc_time *);
static unsigned int q40_get_ss(void);
static int q40_get_rtc_pll(struct rtc_pll_info *pll); static int q40_get_rtc_pll(struct rtc_pll_info *pll);
static int q40_set_rtc_pll(struct rtc_pll_info *pll); static int q40_set_rtc_pll(struct rtc_pll_info *pll);
...@@ -169,7 +168,6 @@ void __init config_q40(void) ...@@ -169,7 +168,6 @@ void __init config_q40(void)
mach_init_IRQ = q40_init_IRQ; mach_init_IRQ = q40_init_IRQ;
mach_hwclk = q40_hwclk; mach_hwclk = q40_hwclk;
mach_get_ss = q40_get_ss;
mach_get_rtc_pll = q40_get_rtc_pll; mach_get_rtc_pll = q40_get_rtc_pll;
mach_set_rtc_pll = q40_set_rtc_pll; mach_set_rtc_pll = q40_set_rtc_pll;
...@@ -246,11 +244,6 @@ static int q40_hwclk(int op, struct rtc_time *t) ...@@ -246,11 +244,6 @@ static int q40_hwclk(int op, struct rtc_time *t)
return 0; return 0;
} }
static unsigned int q40_get_ss(void)
{
return bcd2bin(Q40_RTC_SECS);
}
/* get and set PLL calibration of RTC clock */ /* get and set PLL calibration of RTC clock */
#define Q40_RTC_PLL_MASK ((1<<5)-1) #define Q40_RTC_PLL_MASK ((1<<5)-1)
#define Q40_RTC_PLL_SIGN (1<<5) #define Q40_RTC_PLL_SIGN (1<<5)
......
...@@ -508,7 +508,7 @@ config MMC_OMAP_HS ...@@ -508,7 +508,7 @@ config MMC_OMAP_HS
config MMC_WBSD config MMC_WBSD
tristate "Winbond W83L51xD SD/MMC Card Interface support" tristate "Winbond W83L51xD SD/MMC Card Interface support"
depends on ISA_DMA_API && !M68K depends on ISA_DMA_API
help help
This selects the Winbond(R) W83L51xD Secure digital and This selects the Winbond(R) W83L51xD Secure digital and
Multimedia card Interface. Multimedia card Interface.
......
...@@ -58,7 +58,7 @@ config ARCH_USE_GNU_PROPERTY ...@@ -58,7 +58,7 @@ config ARCH_USE_GNU_PROPERTY
config BINFMT_ELF_FDPIC config BINFMT_ELF_FDPIC
bool "Kernel support for FDPIC ELF binaries" bool "Kernel support for FDPIC ELF binaries"
default y if !BINFMT_ELF default y if !BINFMT_ELF
depends on (ARM || (SUPERH && !MMU)) depends on ARM || ((M68K || SUPERH) && !MMU)
select ELFCORE select ELFCORE
help help
ELF FDPIC binaries are based on ELF, but allow the individual load ELF FDPIC binaries are based on ELF, but allow the individual load
......
...@@ -9,9 +9,7 @@ ifneq ($(CONFIG_SND_PROC_FS),) ...@@ -9,9 +9,7 @@ ifneq ($(CONFIG_SND_PROC_FS),)
snd-y += info.o snd-y += info.o
snd-$(CONFIG_SND_OSSEMUL) += info_oss.o snd-$(CONFIG_SND_OSSEMUL) += info_oss.o
endif endif
ifneq ($(CONFIG_M68K),y)
snd-$(CONFIG_ISA_DMA_API) += isadma.o snd-$(CONFIG_ISA_DMA_API) += isadma.o
endif
snd-$(CONFIG_SND_OSSEMUL) += sound_oss.o snd-$(CONFIG_SND_OSSEMUL) += sound_oss.o
snd-$(CONFIG_SND_VMASTER) += vmaster.o snd-$(CONFIG_SND_VMASTER) += vmaster.o
snd-$(CONFIG_SND_JACK) += ctljack.o jack.o snd-$(CONFIG_SND_JACK) += ctljack.o jack.o
......
...@@ -22,7 +22,7 @@ config SND_SB16_DSP ...@@ -22,7 +22,7 @@ config SND_SB16_DSP
menuconfig SND_ISA menuconfig SND_ISA
bool "ISA sound devices" bool "ISA sound devices"
depends on ISA || COMPILE_TEST depends on ISA || COMPILE_TEST
depends on ISA_DMA_API && !M68K depends on ISA_DMA_API
default y default y
help help
Support for sound devices connected via the ISA bus. Support for sound devices connected via the ISA bus.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment