asm-generic cleanups for 6.8
A series from Baoquan He cleans up the asm-generic/io.h to remove the ioremap_uc() definition from everything except x86, which still needs it for pre-PAT systems. This series notably contains a patch from Jiaxun Yang that converts MIPS to use asm-generic/io.h like every other architecture does, enabling future cleanups. Some of my own patches fix -Wmissing-prototype warnings in architecture specific code across several architectures. This is now needed as the warning is enabled by default. There are still some remaining warnings in minor platforms, but the series should catch most of the widely used ones make them more consistent with one another. David McKay fixes a bug in __generic_cmpxchg_local() when this is used on 64-bit architectures. This could currently only affect parisc64 and sparc64. Additional cleanups address from Linus Walleij, Uwe Kleine-König, Thomas Huth, and Kefeng Wang help reduce unnecessary inconsistencies between architectures. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmWeak8ACgkQYKtH/8kJ UidSiQ/+LL1WTO9d3Zx5HI0GGGjaIYpYs6jUNSf9Y5GPQiOrvjfEWj7CU11/4vxl GlQRpRyncYm8Eiz0Qu+aNxZFiiMah8Uful75yfbX8P1L4EPTbAYNDjkyNJrTjIAK jPK4sl8awIrapOeFUz++PsEj22R/4Is4f0mo+CqoCkL5RKlHe5oFdXzcwjmds4yK CvU6Ldn+M7FZ3EItMdjXaB3D3HS9uictFiO5JByZY8p+IcqgNRI/iHNnZIMsltJ+ XjDi0DG+x4jCj6teElSchw7AofE4OcNSP3xbR1PLKv6+xBLGYaAGZhNuPTz88eV/ Gj0loDQrrR5McGUfDBRHK9zN2Jd0O/FKnfh9kLOt1FLFyGPvC78Q/2HkpVCjbBr2 Pr1aqhLDHA+tGNSsThsV8RUa8/tiEnxAki43tfBFS3SEKhtQsTm2g1z4miwbE3p0 BJIrSgTqrP/SBq7a9z/thPrkzdZcNuA9FUETTbaMeUlJS51n1V9E5A1t7sOG7jaI vV/gbuR6FjvD49mTyQiOSCt3V4ygRqgN1Q+C4QM8WLqq2keUq0AhGodquv8F78in J3x2j2r27lHY7jKf8B0dua/JXAsF20u8qD6yDQ9ymkjt/MWhGXBgK0jpT7RTIuMS e2jmTywUVD4UohAcx3inkOojUhIJ5KDB0I4Pzv4zWcHNbyFNKcY= =4VQl -----END PGP SIGNATURE----- Merge tag 'asm-generic-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic Pull asm-generic cleanups from Arnd Bergmann: "A series from Baoquan He cleans up the asm-generic/io.h to remove the ioremap_uc() definition from everything except x86, which still needs it for pre-PAT systems. This series notably contains a patch from Jiaxun Yang that converts MIPS to use asm-generic/io.h like every other architecture does, enabling future cleanups. Some of my own patches fix -Wmissing-prototype warnings in architecture specific code across several architectures. This is now needed as the warning is enabled by default. There are still some remaining warnings in minor platforms, but the series should catch most of the widely used ones make them more consistent with one another. David McKay fixes a bug in __generic_cmpxchg_local() when this is used on 64-bit architectures. This could currently only affect parisc64 and sparc64. Additional cleanups address from Linus Walleij, Uwe Kleine-König, Thomas Huth, and Kefeng Wang help reduce unnecessary inconsistencies between architectures" * tag 'asm-generic-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic: asm-generic: Fix 32 bit __generic_cmpxchg_local Hexagon: Make pfn accessors statics inlines ARC: mm: Make virt_to_pfn() a static inline mips: remove extraneous asm-generic/iomap.h include sparc: Use $(kecho) to announce kernel images being ready arm64: vdso32: Define BUILD_VDSO32_64 to correct prototypes csky: fix arch_jump_label_transform_static override arch: add do_page_fault prototypes arch: add missing prepare_ftrace_return() prototypes arch: vdso: consolidate gettime prototypes arch: include linux/cpu.h for trap_init() prototype arch: fix asm-offsets.c building with -Wmissing-prototypes arch: consolidate arch_irq_work_raise prototypes hexagon: Remove CONFIG_HEXAGON_ARCH_VERSION from uapi header asm/io: remove unnecessary xlate_dev_mem_ptr() and unxlate_dev_mem_ptr() mips: io: remove duplicated codes arch/*/io.h: remove ioremap_uc in some architectures mips: add <asm-generic/io.h> including
This commit is contained in:
commit
c299010061
@ -408,11 +408,12 @@ functions for details on the CPU side of things.
|
||||
ioremap_uc()
|
||||
------------
|
||||
|
||||
ioremap_uc() behaves like ioremap() except that on the x86 architecture without
|
||||
'PAT' mode, it marks memory as uncached even when the MTRR has designated
|
||||
it as cacheable, see Documentation/arch/x86/pat.rst.
|
||||
ioremap_uc() is only meaningful on old x86-32 systems with the PAT extension,
|
||||
and on ia64 with its slightly unconventional ioremap() behavior, everywhere
|
||||
elss ioremap_uc() defaults to return NULL.
|
||||
|
||||
Portable drivers should avoid the use of ioremap_uc().
|
||||
|
||||
Portable drivers should avoid the use of ioremap_uc(), use ioremap() instead.
|
||||
|
||||
ioremap_cache()
|
||||
---------------
|
||||
|
@ -308,7 +308,6 @@ static inline void __iomem *ioremap(unsigned long port, unsigned long size)
|
||||
}
|
||||
|
||||
#define ioremap_wc ioremap
|
||||
#define ioremap_uc ioremap
|
||||
|
||||
static inline void iounmap(volatile void __iomem *addr)
|
||||
{
|
||||
@ -651,12 +650,6 @@ extern void outsl (unsigned long port, const void *src, unsigned long count);
|
||||
#endif
|
||||
#define RTC_ALWAYS_BCD 0
|
||||
|
||||
/*
|
||||
* Convert a physical pointer to a virtual kernel pointer for /dev/mem
|
||||
* access
|
||||
*/
|
||||
#define xlate_dev_mem_ptr(p) __va(p)
|
||||
|
||||
/*
|
||||
* These get provided from <asm-generic/iomap.h> since alpha does not
|
||||
* select GENERIC_IOMAP.
|
||||
|
@ -183,6 +183,8 @@ ev4_switch_mm(struct mm_struct *prev_mm, struct mm_struct *next_mm,
|
||||
}
|
||||
|
||||
extern void __load_new_mm_context(struct mm_struct *);
|
||||
asmlinkage void do_page_fault(unsigned long address, unsigned long mmcsr,
|
||||
long cause, struct pt_regs *regs);
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
#define check_mmu_context() \
|
||||
|
@ -12,7 +12,7 @@
|
||||
#include <linux/kbuild.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
void foo(void)
|
||||
static void __used foo(void)
|
||||
{
|
||||
DEFINE(TI_TASK, offsetof(struct thread_info, task));
|
||||
DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
|
||||
|
@ -9,6 +9,7 @@
|
||||
* This file initializes the trap entry points
|
||||
*/
|
||||
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/sched/signal.h>
|
||||
|
@ -84,15 +84,6 @@ typedef struct {
|
||||
|
||||
typedef struct page *pgtable_t;
|
||||
|
||||
/*
|
||||
* Use virt_to_pfn with caution:
|
||||
* If used in pte or paddr related macros, it could cause truncation
|
||||
* in PAE40 builds
|
||||
* As a rule of thumb, only use it in helpers starting with virt_
|
||||
* You have been warned !
|
||||
*/
|
||||
#define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT)
|
||||
|
||||
/*
|
||||
* When HIGHMEM is enabled we have holes in the memory map so we need
|
||||
* pfn_valid() that takes into account the actual extents of the physical
|
||||
@ -122,6 +113,18 @@ extern int pfn_valid(unsigned long pfn);
|
||||
#define __pa(vaddr) ((unsigned long)(vaddr))
|
||||
#define __va(paddr) ((void *)((unsigned long)(paddr)))
|
||||
|
||||
/*
|
||||
* Use virt_to_pfn with caution:
|
||||
* If used in pte or paddr related macros, it could cause truncation
|
||||
* in PAE40 builds
|
||||
* As a rule of thumb, only use it in helpers starting with virt_
|
||||
* You have been warned !
|
||||
*/
|
||||
static inline unsigned long virt_to_pfn(const void *kaddr)
|
||||
{
|
||||
return __pa(kaddr) >> PAGE_SHIFT;
|
||||
}
|
||||
|
||||
#define virt_to_page(kaddr) pfn_to_page(virt_to_pfn(kaddr))
|
||||
#define virt_addr_valid(kaddr) pfn_valid(virt_to_pfn(kaddr))
|
||||
|
||||
|
@ -159,7 +159,7 @@
|
||||
#define pmd_clear(xp) do { pmd_val(*(xp)) = 0; } while (0)
|
||||
#define pmd_page_vaddr(pmd) (pmd_val(pmd) & PAGE_MASK)
|
||||
#define pmd_pfn(pmd) ((pmd_val(pmd) & PAGE_MASK) >> PAGE_SHIFT)
|
||||
#define pmd_page(pmd) virt_to_page(pmd_page_vaddr(pmd))
|
||||
#define pmd_page(pmd) virt_to_page((void *)pmd_page_vaddr(pmd))
|
||||
#define set_pmd(pmdp, pmd) (*(pmdp) = pmd)
|
||||
#define pmd_pgtable(pmd) ((pgtable_t) pmd_page(pmd))
|
||||
|
||||
|
@ -407,12 +407,6 @@ struct pci_dev;
|
||||
#define pci_iounmap pci_iounmap
|
||||
extern void pci_iounmap(struct pci_dev *dev, void __iomem *addr);
|
||||
|
||||
/*
|
||||
* Convert a physical pointer to a virtual kernel pointer for /dev/mem
|
||||
* access
|
||||
*/
|
||||
#define xlate_dev_mem_ptr(p) __va(p)
|
||||
|
||||
#include <asm-generic/io.h>
|
||||
|
||||
#ifdef CONFIG_MMU
|
||||
|
@ -9,6 +9,4 @@ static inline bool arch_irq_work_has_interrupt(void)
|
||||
return is_smp();
|
||||
}
|
||||
|
||||
extern void arch_irq_work_raise(void);
|
||||
|
||||
#endif /* _ASM_ARM_IRQ_WORK_H */
|
||||
|
@ -24,11 +24,6 @@ static inline void arm_install_vdso(struct mm_struct *mm, unsigned long addr)
|
||||
|
||||
#endif /* CONFIG_VDSO */
|
||||
|
||||
int __vdso_clock_gettime(clockid_t clock, struct old_timespec32 *ts);
|
||||
int __vdso_clock_gettime64(clockid_t clock, struct __kernel_timespec *ts);
|
||||
int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz);
|
||||
int __vdso_clock_getres(clockid_t clock_id, struct old_timespec32 *res);
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include <linux/types.h>
|
||||
#include <asm/vdso.h>
|
||||
#include <asm/unwind.h>
|
||||
#include <vdso/gettime.h>
|
||||
|
||||
int __vdso_clock_gettime(clockid_t clock,
|
||||
struct old_timespec32 *ts)
|
||||
|
@ -2,8 +2,6 @@
|
||||
#ifndef __ASM_IRQ_WORK_H
|
||||
#define __ASM_IRQ_WORK_H
|
||||
|
||||
extern void arch_irq_work_raise(void);
|
||||
|
||||
static inline bool arch_irq_work_has_interrupt(void)
|
||||
{
|
||||
return true;
|
||||
|
@ -5,6 +5,8 @@
|
||||
* Copyright (C) 2018 ARM Limited
|
||||
*
|
||||
*/
|
||||
#define BUILD_VDSO32_64
|
||||
#include <vdso/gettime.h>
|
||||
|
||||
int __vdso_clock_gettime(clockid_t clock,
|
||||
struct old_timespec32 *ts)
|
||||
|
@ -26,5 +26,9 @@ static inline unsigned long ftrace_call_adjust(unsigned long addr)
|
||||
|
||||
struct dyn_arch_ftrace {
|
||||
};
|
||||
|
||||
void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr,
|
||||
unsigned long frame_pointer);
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
#endif /* __ASM_CSKY_FTRACE_H */
|
||||
|
@ -7,5 +7,5 @@ static inline bool arch_irq_work_has_interrupt(void)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
extern void arch_irq_work_raise(void);
|
||||
|
||||
#endif /* __ASM_CSKY_IRQ_WORK_H */
|
||||
|
@ -43,5 +43,10 @@ label:
|
||||
return true;
|
||||
}
|
||||
|
||||
enum jump_label_type;
|
||||
void arch_jump_label_transform_static(struct jump_entry *entry,
|
||||
enum jump_label_type type);
|
||||
#define arch_jump_label_transform_static arch_jump_label_transform_static
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* __ASM_CSKY_JUMP_LABEL_H */
|
||||
|
@ -55,6 +55,6 @@ asmlinkage void trap_c(struct pt_regs *regs);
|
||||
asmlinkage void do_notify_resume(struct pt_regs *regs,
|
||||
unsigned long thread_info_flags);
|
||||
|
||||
void trap_init(void);
|
||||
asmlinkage void do_page_fault(struct pt_regs *regs);
|
||||
|
||||
#endif /* __ASM_CSKY_TRAPS_H */
|
||||
|
@ -1,6 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
// Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
|
||||
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/signal.h>
|
||||
#include <linux/kernel.h>
|
||||
|
@ -2,36 +2,27 @@
|
||||
|
||||
#include <linux/time.h>
|
||||
#include <linux/types.h>
|
||||
#include <vdso/gettime.h>
|
||||
|
||||
extern
|
||||
int __vdso_clock_gettime(clockid_t clock,
|
||||
struct old_timespec32 *ts);
|
||||
int __vdso_clock_gettime(clockid_t clock,
|
||||
struct old_timespec32 *ts)
|
||||
{
|
||||
return __cvdso_clock_gettime32(clock, ts);
|
||||
}
|
||||
|
||||
int __vdso_clock_gettime64(clockid_t clock,
|
||||
struct __kernel_timespec *ts);
|
||||
int __vdso_clock_gettime64(clockid_t clock,
|
||||
struct __kernel_timespec *ts)
|
||||
{
|
||||
return __cvdso_clock_gettime(clock, ts);
|
||||
}
|
||||
|
||||
extern
|
||||
int __vdso_gettimeofday(struct __kernel_old_timeval *tv,
|
||||
struct timezone *tz);
|
||||
int __vdso_gettimeofday(struct __kernel_old_timeval *tv,
|
||||
struct timezone *tz)
|
||||
{
|
||||
return __cvdso_gettimeofday(tv, tz);
|
||||
}
|
||||
|
||||
extern
|
||||
int __vdso_clock_getres(clockid_t clock_id,
|
||||
struct old_timespec32 *res);
|
||||
int __vdso_clock_getres(clockid_t clock_id,
|
||||
struct old_timespec32 *res)
|
||||
{
|
||||
|
@ -58,12 +58,6 @@ static inline void *phys_to_virt(unsigned long address)
|
||||
return __va(address);
|
||||
}
|
||||
|
||||
/*
|
||||
* convert a physical pointer to a virtual kernel pointer for
|
||||
* /dev/mem access.
|
||||
*/
|
||||
#define xlate_dev_mem_ptr(p) __va(p)
|
||||
|
||||
/*
|
||||
* IO port access primitives. Hexagon doesn't have special IO access
|
||||
* instructions; all I/O is memory mapped.
|
||||
@ -174,9 +168,6 @@ static inline void writel(u32 data, volatile void __iomem *addr)
|
||||
#define _PAGE_IOREMAP (_PAGE_PRESENT | _PAGE_READ | _PAGE_WRITE | \
|
||||
(__HEXAGON_C_DEV << 6))
|
||||
|
||||
#define ioremap_uc(addr, size) ioremap((addr), (size))
|
||||
|
||||
|
||||
#define __raw_writel writel
|
||||
|
||||
static inline void memcpy_fromio(void *dst, const volatile void __iomem *src,
|
||||
|
@ -78,6 +78,9 @@ typedef struct page *pgtable_t;
|
||||
#define __pgd(x) ((pgd_t) { (x) })
|
||||
#define __pgprot(x) ((pgprot_t) { (x) })
|
||||
|
||||
/* Needed for PAGE_OFFSET used in the macro right below */
|
||||
#include <asm/mem-layout.h>
|
||||
|
||||
/*
|
||||
* We need a __pa and a __va routine for kernel space.
|
||||
* MIPS says they're only used during mem_init.
|
||||
@ -125,8 +128,16 @@ static inline void clear_page(void *page)
|
||||
*/
|
||||
#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
|
||||
|
||||
#define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT)
|
||||
#define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT)
|
||||
static inline unsigned long virt_to_pfn(const void *kaddr)
|
||||
{
|
||||
return __pa(kaddr) >> PAGE_SHIFT;
|
||||
}
|
||||
|
||||
static inline void *pfn_to_virt(unsigned long pfn)
|
||||
{
|
||||
return (void *)((unsigned long)__va(pfn) << PAGE_SHIFT);
|
||||
}
|
||||
|
||||
|
||||
#define page_to_virt(page) __va(page_to_phys(page))
|
||||
|
||||
|
@ -56,15 +56,10 @@ struct user_regs_struct {
|
||||
unsigned long pc;
|
||||
unsigned long cause;
|
||||
unsigned long badva;
|
||||
#if CONFIG_HEXAGON_ARCH_VERSION < 4
|
||||
unsigned long pad1; /* pad out to 48 words total */
|
||||
unsigned long pad2; /* pad out to 48 words total */
|
||||
unsigned long pad3; /* pad out to 48 words total */
|
||||
#else
|
||||
/* cs0 and cs1 are only available with HEXAGON_ARCH_VERSION >= 4 */
|
||||
unsigned long cs0;
|
||||
unsigned long cs1;
|
||||
unsigned long pad1; /* pad out to 48 words total */
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -74,7 +74,7 @@ static int genregs_set(struct task_struct *target,
|
||||
unsigned int pos, unsigned int count,
|
||||
const void *kbuf, const void __user *ubuf)
|
||||
{
|
||||
int ret;
|
||||
int ret, ignore_offset;
|
||||
unsigned long bucket;
|
||||
struct pt_regs *regs = task_pt_regs(target);
|
||||
|
||||
@ -111,12 +111,15 @@ static int genregs_set(struct task_struct *target,
|
||||
#if CONFIG_HEXAGON_ARCH_VERSION >=4
|
||||
INEXT(®s->cs0, cs0);
|
||||
INEXT(®s->cs1, cs1);
|
||||
ignore_offset = offsetof(struct user_regs_struct, pad1);
|
||||
#else
|
||||
ignore_offset = offsetof(struct user_regs_struct, cs0);
|
||||
#endif
|
||||
|
||||
/* Ignore the rest, if needed */
|
||||
if (!ret)
|
||||
user_regset_copyin_ignore(&pos, &count, &kbuf, &ubuf,
|
||||
offsetof(struct user_regs_struct, pad1), -1);
|
||||
ignore_offset, -1);
|
||||
else
|
||||
return ret;
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
#include <asm/processor.h>
|
||||
#include <asm/ftrace.h>
|
||||
|
||||
void output_ptreg_defines(void)
|
||||
static void __used output_ptreg_defines(void)
|
||||
{
|
||||
COMMENT("LoongArch pt_regs offsets.");
|
||||
OFFSET(PT_R0, pt_regs, regs[0]);
|
||||
@ -62,7 +62,7 @@ void output_ptreg_defines(void)
|
||||
BLANK();
|
||||
}
|
||||
|
||||
void output_task_defines(void)
|
||||
static void __used output_task_defines(void)
|
||||
{
|
||||
COMMENT("LoongArch task_struct offsets.");
|
||||
OFFSET(TASK_STATE, task_struct, __state);
|
||||
@ -77,7 +77,7 @@ void output_task_defines(void)
|
||||
BLANK();
|
||||
}
|
||||
|
||||
void output_thread_info_defines(void)
|
||||
static void __used output_thread_info_defines(void)
|
||||
{
|
||||
COMMENT("LoongArch thread_info offsets.");
|
||||
OFFSET(TI_TASK, thread_info, task);
|
||||
@ -93,7 +93,7 @@ void output_thread_info_defines(void)
|
||||
BLANK();
|
||||
}
|
||||
|
||||
void output_thread_defines(void)
|
||||
static void __used output_thread_defines(void)
|
||||
{
|
||||
COMMENT("LoongArch specific thread_struct offsets.");
|
||||
OFFSET(THREAD_REG01, task_struct, thread.reg01);
|
||||
@ -129,7 +129,7 @@ void output_thread_defines(void)
|
||||
BLANK();
|
||||
}
|
||||
|
||||
void output_thread_fpu_defines(void)
|
||||
static void __used output_thread_fpu_defines(void)
|
||||
{
|
||||
OFFSET(THREAD_FPR0, loongarch_fpu, fpr[0]);
|
||||
OFFSET(THREAD_FPR1, loongarch_fpu, fpr[1]);
|
||||
@ -170,7 +170,7 @@ void output_thread_fpu_defines(void)
|
||||
BLANK();
|
||||
}
|
||||
|
||||
void output_thread_lbt_defines(void)
|
||||
static void __used output_thread_lbt_defines(void)
|
||||
{
|
||||
OFFSET(THREAD_SCR0, loongarch_lbt, scr0);
|
||||
OFFSET(THREAD_SCR1, loongarch_lbt, scr1);
|
||||
@ -180,7 +180,7 @@ void output_thread_lbt_defines(void)
|
||||
BLANK();
|
||||
}
|
||||
|
||||
void output_mm_defines(void)
|
||||
static void __used output_mm_defines(void)
|
||||
{
|
||||
COMMENT("Size of struct page");
|
||||
DEFINE(STRUCT_PAGE_SIZE, sizeof(struct page));
|
||||
@ -212,7 +212,7 @@ void output_mm_defines(void)
|
||||
BLANK();
|
||||
}
|
||||
|
||||
void output_sc_defines(void)
|
||||
static void __used output_sc_defines(void)
|
||||
{
|
||||
COMMENT("Linux sigcontext offsets.");
|
||||
OFFSET(SC_REGS, sigcontext, sc_regs);
|
||||
@ -220,7 +220,7 @@ void output_sc_defines(void)
|
||||
BLANK();
|
||||
}
|
||||
|
||||
void output_signal_defines(void)
|
||||
static void __used output_signal_defines(void)
|
||||
{
|
||||
COMMENT("Linux signal numbers.");
|
||||
DEFINE(_SIGHUP, SIGHUP);
|
||||
@ -258,7 +258,7 @@ void output_signal_defines(void)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
void output_smpboot_defines(void)
|
||||
static void __used output_smpboot_defines(void)
|
||||
{
|
||||
COMMENT("Linux smp cpu boot offsets.");
|
||||
OFFSET(CPU_BOOT_STACK, secondary_data, stack);
|
||||
@ -268,7 +268,7 @@ void output_smpboot_defines(void)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_HIBERNATION
|
||||
void output_pbe_defines(void)
|
||||
static void __used output_pbe_defines(void)
|
||||
{
|
||||
COMMENT("Linux struct pbe offsets.");
|
||||
OFFSET(PBE_ADDRESS, pbe, address);
|
||||
@ -280,7 +280,7 @@ void output_pbe_defines(void)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||
void output_fgraph_ret_regs_defines(void)
|
||||
static void __used output_fgraph_ret_regs_defines(void)
|
||||
{
|
||||
COMMENT("LoongArch fgraph_ret_regs offsets.");
|
||||
OFFSET(FGRET_REGS_A0, fgraph_ret_regs, regs[0]);
|
||||
@ -291,7 +291,7 @@ void output_fgraph_ret_regs_defines(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
void output_kvm_defines(void)
|
||||
static void __used output_kvm_defines(void)
|
||||
{
|
||||
COMMENT("KVM/LoongArch Specific offsets.");
|
||||
|
||||
|
@ -5,23 +5,18 @@
|
||||
* Copyright (C) 2020-2022 Loongson Technology Corporation Limited
|
||||
*/
|
||||
#include <linux/types.h>
|
||||
#include <vdso/gettime.h>
|
||||
|
||||
extern
|
||||
int __vdso_clock_gettime(clockid_t clock, struct __kernel_timespec *ts);
|
||||
int __vdso_clock_gettime(clockid_t clock, struct __kernel_timespec *ts)
|
||||
{
|
||||
return __cvdso_clock_gettime(clock, ts);
|
||||
}
|
||||
|
||||
extern
|
||||
int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz);
|
||||
int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz)
|
||||
{
|
||||
return __cvdso_gettimeofday(tv, tz);
|
||||
}
|
||||
|
||||
extern
|
||||
int __vdso_clock_getres(clockid_t clock_id, struct __kernel_timespec *res);
|
||||
int __vdso_clock_getres(clockid_t clock_id, struct __kernel_timespec *res)
|
||||
{
|
||||
return __cvdso_clock_getres(clock_id, res);
|
||||
|
@ -12,14 +12,13 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/cpu.h>
|
||||
#include <asm/traps.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/coldfire.h>
|
||||
#include <asm/mcfsim.h>
|
||||
#include <asm/mcfwdebug.h>
|
||||
|
||||
#include "vectors.h"
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
#ifdef TRAP_DBG_INTERRUPT
|
||||
|
@ -1,3 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
void trap_init(void);
|
@ -389,12 +389,6 @@ static inline void isa_delay(void)
|
||||
|
||||
#define __ARCH_HAS_NO_PAGE_ZERO_MAPPED 1
|
||||
|
||||
/*
|
||||
* Convert a physical pointer to a virtual kernel pointer for /dev/mem
|
||||
* access
|
||||
*/
|
||||
#define xlate_dev_mem_ptr(p) __va(p)
|
||||
|
||||
#define readb_relaxed(addr) readb(addr)
|
||||
#define readw_relaxed(addr) readw(addr)
|
||||
#define readl_relaxed(addr) readl(addr)
|
||||
|
@ -25,7 +25,6 @@ static inline void __iomem *ioremap(unsigned long physaddr, unsigned long size)
|
||||
return __ioremap(physaddr, size, IOMAP_NOCACHE_SER);
|
||||
}
|
||||
|
||||
#define ioremap_uc ioremap
|
||||
#define ioremap_wt ioremap_wt
|
||||
static inline void __iomem *ioremap_wt(unsigned long physaddr,
|
||||
unsigned long size)
|
||||
|
@ -10,6 +10,7 @@
|
||||
#ifndef __ASSEMBLY__
|
||||
extern void _mcount(void);
|
||||
extern void ftrace_call_graph(void);
|
||||
void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DYNAMIC_FTRACE
|
||||
|
@ -8,6 +8,7 @@
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/kallsyms.h>
|
||||
|
@ -85,6 +85,10 @@ struct dyn_arch_ftrace {
|
||||
};
|
||||
|
||||
#endif /* CONFIG_DYNAMIC_FTRACE */
|
||||
|
||||
void prepare_ftrace_return(unsigned long *parent_ra_addr, unsigned long self_ra,
|
||||
unsigned long fp);
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* CONFIG_FUNCTION_TRACER */
|
||||
#endif /* _ASM_MIPS_FTRACE_H */
|
||||
|
@ -13,7 +13,6 @@
|
||||
#define _ASM_IO_H
|
||||
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/irqflags.h>
|
||||
|
||||
@ -25,7 +24,6 @@
|
||||
#include <asm/cpu-features.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/pgtable-bits.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/string.h>
|
||||
#include <mangle-port.h>
|
||||
|
||||
@ -41,6 +39,11 @@
|
||||
# define __raw_ioswabq(a, x) (x)
|
||||
# define ____raw_ioswabq(a, x) (x)
|
||||
|
||||
# define _ioswabb ioswabb
|
||||
# define _ioswabw ioswabw
|
||||
# define _ioswabl ioswabl
|
||||
# define _ioswabq ioswabq
|
||||
|
||||
# define __relaxed_ioswabb ioswabb
|
||||
# define __relaxed_ioswabw ioswabw
|
||||
# define __relaxed_ioswabl ioswabl
|
||||
@ -114,23 +117,6 @@ static inline phys_addr_t virt_to_phys(const volatile void *x)
|
||||
return __virt_to_phys(x);
|
||||
}
|
||||
|
||||
/*
|
||||
* phys_to_virt - map physical address to virtual
|
||||
* @address: address to remap
|
||||
*
|
||||
* The returned virtual address is a current CPU mapping for
|
||||
* the memory address given. It is only valid to use this function on
|
||||
* addresses that have a kernel mapping
|
||||
*
|
||||
* This function does not handle bus mappings for DMA transfers. In
|
||||
* almost all conceivable cases a device driver should not be using
|
||||
* this function
|
||||
*/
|
||||
static inline void * phys_to_virt(unsigned long address)
|
||||
{
|
||||
return __va(address);
|
||||
}
|
||||
|
||||
/*
|
||||
* ISA I/O bus memory addresses are 1:1 with the physical address.
|
||||
*/
|
||||
@ -139,11 +125,6 @@ static inline unsigned long isa_virt_to_bus(volatile void *address)
|
||||
return virt_to_phys(address);
|
||||
}
|
||||
|
||||
static inline void *isa_bus_to_virt(unsigned long address)
|
||||
{
|
||||
return phys_to_virt(address);
|
||||
}
|
||||
|
||||
/*
|
||||
* Change "struct page" to physical address.
|
||||
*/
|
||||
@ -166,7 +147,6 @@ void iounmap(const volatile void __iomem *addr);
|
||||
*/
|
||||
#define ioremap(offset, size) \
|
||||
ioremap_prot((offset), (size), _CACHE_UNCACHED)
|
||||
#define ioremap_uc ioremap
|
||||
|
||||
/*
|
||||
* ioremap_cache - map bus memory into CPU space
|
||||
@ -207,8 +187,6 @@ void iounmap(const volatile void __iomem *addr);
|
||||
#define ioremap_wc(offset, size) \
|
||||
ioremap_prot((offset), (size), boot_cpu_data.writecombine)
|
||||
|
||||
#include <asm-generic/iomap.h>
|
||||
|
||||
#if defined(CONFIG_CPU_CAVIUM_OCTEON)
|
||||
#define war_io_reorder_wmb() wmb()
|
||||
#else
|
||||
@ -296,9 +274,9 @@ static inline type pfx##read##bwlq(const volatile void __iomem *mem) \
|
||||
return pfx##ioswab##bwlq(__mem, __val); \
|
||||
}
|
||||
|
||||
#define __BUILD_IOPORT_SINGLE(pfx, bwlq, type, barrier, relax, p) \
|
||||
#define __BUILD_IOPORT_SINGLE(pfx, bwlq, type, barrier, relax) \
|
||||
\
|
||||
static inline void pfx##out##bwlq##p(type val, unsigned long port) \
|
||||
static inline void pfx##out##bwlq(type val, unsigned long port) \
|
||||
{ \
|
||||
volatile type *__addr; \
|
||||
type __val; \
|
||||
@ -318,7 +296,7 @@ static inline void pfx##out##bwlq##p(type val, unsigned long port) \
|
||||
*__addr = __val; \
|
||||
} \
|
||||
\
|
||||
static inline type pfx##in##bwlq##p(unsigned long port) \
|
||||
static inline type pfx##in##bwlq(unsigned long port) \
|
||||
{ \
|
||||
volatile type *__addr; \
|
||||
type __val; \
|
||||
@ -360,11 +338,10 @@ __BUILD_MEMORY_PFX(__mem_, q, u64, 0)
|
||||
#endif
|
||||
|
||||
#define __BUILD_IOPORT_PFX(bus, bwlq, type) \
|
||||
__BUILD_IOPORT_SINGLE(bus, bwlq, type, 1, 0,) \
|
||||
__BUILD_IOPORT_SINGLE(bus, bwlq, type, 1, 0, _p)
|
||||
__BUILD_IOPORT_SINGLE(bus, bwlq, type, 1, 0)
|
||||
|
||||
#define BUILDIO_IOPORT(bwlq, type) \
|
||||
__BUILD_IOPORT_PFX(, bwlq, type) \
|
||||
__BUILD_IOPORT_PFX(_, bwlq, type) \
|
||||
__BUILD_IOPORT_PFX(__mem_, bwlq, type)
|
||||
|
||||
BUILDIO_IOPORT(b, u8)
|
||||
@ -412,14 +389,6 @@ __BUILDIO(q, u64)
|
||||
#define writeq_be(val, addr) \
|
||||
__raw_writeq(cpu_to_be64((val)), (__force unsigned *)(addr))
|
||||
|
||||
/*
|
||||
* Some code tests for these symbols
|
||||
*/
|
||||
#ifdef CONFIG_64BIT
|
||||
#define readq readq
|
||||
#define writeq writeq
|
||||
#endif
|
||||
|
||||
#define __BUILD_MEMORY_STRING(bwlq, type) \
|
||||
\
|
||||
static inline void writes##bwlq(volatile void __iomem *mem, \
|
||||
@ -480,18 +449,6 @@ BUILDSTRING(l, u32)
|
||||
BUILDSTRING(q, u64)
|
||||
#endif
|
||||
|
||||
static inline void memset_io(volatile void __iomem *addr, unsigned char val, int count)
|
||||
{
|
||||
memset((void __force *) addr, val, count);
|
||||
}
|
||||
static inline void memcpy_fromio(void *dst, const volatile void __iomem *src, int count)
|
||||
{
|
||||
memcpy(dst, (void __force *) src, count);
|
||||
}
|
||||
static inline void memcpy_toio(volatile void __iomem *dst, const void *src, int count)
|
||||
{
|
||||
memcpy((void __force *) dst, src, count);
|
||||
}
|
||||
|
||||
/*
|
||||
* The caches on some architectures aren't dma-coherent and have need to
|
||||
@ -548,13 +505,66 @@ extern void (*_dma_cache_inv)(unsigned long start, unsigned long size);
|
||||
#define csr_out32(v, a) (*(volatile u32 *)((unsigned long)(a) + __CSR_32_ADJUST) = (v))
|
||||
#define csr_in32(a) (*(volatile u32 *)((unsigned long)(a) + __CSR_32_ADJUST))
|
||||
|
||||
/*
|
||||
* Convert a physical pointer to a virtual kernel pointer for /dev/mem
|
||||
* access
|
||||
*/
|
||||
#define xlate_dev_mem_ptr(p) __va(p)
|
||||
#define unxlate_dev_mem_ptr(p, v) do { } while (0)
|
||||
#define __raw_readb __raw_readb
|
||||
#define __raw_readw __raw_readw
|
||||
#define __raw_readl __raw_readl
|
||||
#ifdef CONFIG_64BIT
|
||||
#define __raw_readq __raw_readq
|
||||
#endif
|
||||
#define __raw_writeb __raw_writeb
|
||||
#define __raw_writew __raw_writew
|
||||
#define __raw_writel __raw_writel
|
||||
#ifdef CONFIG_64BIT
|
||||
#define __raw_writeq __raw_writeq
|
||||
#endif
|
||||
|
||||
#define readb readb
|
||||
#define readw readw
|
||||
#define readl readl
|
||||
#ifdef CONFIG_64BIT
|
||||
#define readq readq
|
||||
#endif
|
||||
#define writeb writeb
|
||||
#define writew writew
|
||||
#define writel writel
|
||||
#ifdef CONFIG_64BIT
|
||||
#define writeq writeq
|
||||
#endif
|
||||
|
||||
#define readsb readsb
|
||||
#define readsw readsw
|
||||
#define readsl readsl
|
||||
#ifdef CONFIG_64BIT
|
||||
#define readsq readsq
|
||||
#endif
|
||||
#define writesb writesb
|
||||
#define writesw writesw
|
||||
#define writesl writesl
|
||||
#ifdef CONFIG_64BIT
|
||||
#define writesq writesq
|
||||
#endif
|
||||
|
||||
#define _inb _inb
|
||||
#define _inw _inw
|
||||
#define _inl _inl
|
||||
#define insb insb
|
||||
#define insw insw
|
||||
#define insl insl
|
||||
|
||||
#define _outb _outb
|
||||
#define _outw _outw
|
||||
#define _outl _outl
|
||||
#define outsb outsb
|
||||
#define outsw outsw
|
||||
#define outsl outsl
|
||||
|
||||
void __ioread64_copy(void *to, const void __iomem *from, size_t count);
|
||||
|
||||
#include <asm-generic/io.h>
|
||||
|
||||
static inline void *isa_bus_to_virt(unsigned long address)
|
||||
{
|
||||
return phys_to_virt(address);
|
||||
}
|
||||
|
||||
#endif /* _ASM_IO_H */
|
||||
|
@ -2,9 +2,9 @@
|
||||
#ifndef _ASM_MMIOWB_H
|
||||
#define _ASM_MMIOWB_H
|
||||
|
||||
#include <asm/io.h>
|
||||
#include <asm/barrier.h>
|
||||
|
||||
#define mmiowb() iobarrier_w()
|
||||
#define mmiowb() wmb()
|
||||
|
||||
#include <asm-generic/mmiowb.h>
|
||||
|
||||
|
@ -13,8 +13,6 @@
|
||||
|
||||
#include <linux/errno.h>
|
||||
|
||||
#include <asm/mips-cps.h>
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
|
||||
#include <linux/cpumask.h>
|
||||
|
@ -11,13 +11,11 @@
|
||||
#ifndef __ASM_SMP_H
|
||||
#define __ASM_SMP_H
|
||||
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/threads.h>
|
||||
#include <linux/cpumask.h>
|
||||
|
||||
#include <linux/atomic.h>
|
||||
#include <asm/smp-ops.h>
|
||||
|
||||
extern int smp_num_siblings;
|
||||
|
@ -58,6 +58,8 @@ asmlinkage void do_reserved(struct pt_regs *regs);
|
||||
asmlinkage void do_ftlb(void);
|
||||
asmlinkage void do_gsexc(struct pt_regs *regs, u32 diag1);
|
||||
asmlinkage void do_daddi_ov(struct pt_regs *regs);
|
||||
asmlinkage void do_page_fault(struct pt_regs *regs,
|
||||
unsigned long write, unsigned long address);
|
||||
|
||||
asmlinkage void cache_parity_error(void);
|
||||
asmlinkage void ejtag_exception_handler(struct pt_regs *regs);
|
||||
|
@ -42,6 +42,7 @@
|
||||
#include <asm/sections.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/smp-ops.h>
|
||||
#include <asm/mips-cps.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/fw/fw.h>
|
||||
|
||||
|
@ -7,6 +7,9 @@
|
||||
* Copyright (C) 1999, 2000, 04 Ralf Baechle (ralf@linux-mips.org)
|
||||
* Copyright (C) 1999, 2000 Silicon Graphics, Inc.
|
||||
*/
|
||||
|
||||
#include <linux/io.h>
|
||||
|
||||
#include <asm/sn/addrs.h>
|
||||
#include <asm/sn/types.h>
|
||||
#include <asm/sn/klconfig.h>
|
||||
|
@ -9,6 +9,7 @@
|
||||
*/
|
||||
#include <linux/time.h>
|
||||
#include <linux/types.h>
|
||||
#include <vdso/gettime.h>
|
||||
|
||||
#if _MIPS_SIM != _MIPS_SIM_ABI64
|
||||
int __vdso_clock_gettime(clockid_t clock,
|
||||
|
@ -14,6 +14,8 @@
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
void _exception(int signo, struct pt_regs *regs, int code, unsigned long addr);
|
||||
void do_page_fault(struct pt_regs *regs, unsigned long cause,
|
||||
unsigned long address);
|
||||
#endif
|
||||
|
||||
#endif /* _ASM_NIOS2_TRAPS_H */
|
||||
|
@ -132,8 +132,6 @@ static inline void gsc_writeq(unsigned long long val, unsigned long addr)
|
||||
|
||||
#define ioremap_wc(addr, size) \
|
||||
ioremap_prot((addr), (size), _PAGE_IOREMAP)
|
||||
#define ioremap_uc(addr, size) \
|
||||
ioremap_prot((addr), (size), _PAGE_IOREMAP)
|
||||
|
||||
#define pci_iounmap pci_iounmap
|
||||
|
||||
@ -267,12 +265,6 @@ extern void iowrite64be(u64 val, void __iomem *addr);
|
||||
#define iowrite16_rep iowrite16_rep
|
||||
#define iowrite32_rep iowrite32_rep
|
||||
|
||||
/*
|
||||
* Convert a physical pointer to a virtual kernel pointer for /dev/mem
|
||||
* access
|
||||
*/
|
||||
#define xlate_dev_mem_ptr(p) __va(p)
|
||||
|
||||
extern int devmem_is_allowed(unsigned long pfn);
|
||||
|
||||
#include <asm-generic/io.h>
|
||||
|
@ -709,12 +709,6 @@ static inline void name at \
|
||||
#define memcpy_fromio memcpy_fromio
|
||||
#define memcpy_toio memcpy_toio
|
||||
|
||||
/*
|
||||
* Convert a physical pointer to a virtual kernel pointer for /dev/mem
|
||||
* access
|
||||
*/
|
||||
#define xlate_dev_mem_ptr(p) __va(p)
|
||||
|
||||
/*
|
||||
* We don't do relaxed operations yet, at least not with this semantic
|
||||
*/
|
||||
@ -900,7 +894,6 @@ void __iomem *ioremap_wt(phys_addr_t address, unsigned long size);
|
||||
#endif
|
||||
|
||||
void __iomem *ioremap_coherent(phys_addr_t address, unsigned long size);
|
||||
#define ioremap_uc(addr, size) ioremap((addr), (size))
|
||||
#define ioremap_cache(addr, size) \
|
||||
ioremap_prot((addr), (size), pgprot_val(PAGE_KERNEL))
|
||||
|
||||
|
@ -6,6 +6,5 @@ static inline bool arch_irq_work_has_interrupt(void)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
extern void arch_irq_work_raise(void);
|
||||
|
||||
#endif /* _ASM_POWERPC_IRQ_WORK_H */
|
||||
|
@ -6,5 +6,5 @@ static inline bool arch_irq_work_has_interrupt(void)
|
||||
{
|
||||
return IS_ENABLED(CONFIG_SMP);
|
||||
}
|
||||
extern void arch_irq_work_raise(void);
|
||||
|
||||
#endif /* _ASM_RISCV_IRQ_WORK_H */
|
||||
|
@ -8,23 +8,18 @@
|
||||
|
||||
#include <linux/time.h>
|
||||
#include <linux/types.h>
|
||||
#include <vdso/gettime.h>
|
||||
|
||||
extern
|
||||
int __vdso_clock_gettime(clockid_t clock, struct __kernel_timespec *ts);
|
||||
int __vdso_clock_gettime(clockid_t clock, struct __kernel_timespec *ts)
|
||||
{
|
||||
return __cvdso_clock_gettime(clock, ts);
|
||||
}
|
||||
|
||||
extern
|
||||
int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz);
|
||||
int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz)
|
||||
{
|
||||
return __cvdso_gettimeofday(tv, tz);
|
||||
}
|
||||
|
||||
extern
|
||||
int __vdso_clock_getres(clockid_t clock_id, struct __kernel_timespec *res);
|
||||
int __vdso_clock_getres(clockid_t clock_id, struct __kernel_timespec *res)
|
||||
{
|
||||
return __cvdso_clock_getres(clock_id, res);
|
||||
|
@ -7,6 +7,4 @@ static inline bool arch_irq_work_has_interrupt(void)
|
||||
return true;
|
||||
}
|
||||
|
||||
void arch_irq_work_raise(void);
|
||||
|
||||
#endif /* _ASM_S390_IRQ_WORK_H */
|
||||
|
@ -302,15 +302,6 @@ unsigned long long poke_real_address_q(unsigned long long addr,
|
||||
ioremap_prot((addr), (size), pgprot_val(PAGE_KERNEL))
|
||||
#endif /* CONFIG_MMU */
|
||||
|
||||
#define ioremap_uc ioremap
|
||||
|
||||
/*
|
||||
* Convert a physical pointer to a virtual kernel pointer for /dev/mem
|
||||
* access
|
||||
*/
|
||||
#define xlate_dev_mem_ptr(p) __va(p)
|
||||
#define unxlate_dev_mem_ptr(p, v) do { } while (0)
|
||||
|
||||
#include <asm-generic/io.h>
|
||||
|
||||
#define ARCH_HAS_VALID_PHYS_ADDR_RANGE
|
||||
|
@ -43,6 +43,9 @@ static inline void trigger_address_error(void)
|
||||
asmlinkage void do_address_error(struct pt_regs *regs,
|
||||
unsigned long writeaccess,
|
||||
unsigned long address);
|
||||
asmlinkage void do_page_fault(struct pt_regs *regs,
|
||||
unsigned long error_code,
|
||||
unsigned long address);
|
||||
asmlinkage void do_divide_error(unsigned long r4);
|
||||
asmlinkage void do_reserved_inst(void);
|
||||
asmlinkage void do_illegal_slot_inst(void);
|
||||
|
@ -24,16 +24,16 @@ ifeq ($(CONFIG_SPARC64),y)
|
||||
|
||||
$(obj)/zImage: $(obj)/image FORCE
|
||||
$(call if_changed,gzip)
|
||||
@echo ' kernel: $@ is ready'
|
||||
@$(kecho) 'Kernel: $@ is ready' '(#'$(or $(KBUILD_BUILD_VERSION),`cat .version`)')'
|
||||
|
||||
$(obj)/vmlinux.aout: vmlinux FORCE
|
||||
$(call if_changed,elftoaout)
|
||||
@echo ' kernel: $@ is ready'
|
||||
@$(kecho) 'Kernel: $@ is ready' '(#'$(or $(KBUILD_BUILD_VERSION),`cat .version`)')'
|
||||
else
|
||||
|
||||
$(obj)/zImage: $(obj)/image FORCE
|
||||
$(call if_changed,strip)
|
||||
@echo ' kernel: $@ is ready'
|
||||
@$(kecho) 'Kernel: $@ is ready' '(#'$(or $(KBUILD_BUILD_VERSION),`cat .version`)')'
|
||||
|
||||
# The following lines make a readable image for U-Boot.
|
||||
# uImage - Binary file read by U-boot
|
||||
@ -59,13 +59,13 @@ targets += uImage
|
||||
$(obj)/uImage: $(obj)/image.gz FORCE
|
||||
$(call if_changed,uimage)
|
||||
$(call if_changed,uimage.o)
|
||||
@echo ' Image $@ is ready'
|
||||
@$(kecho) 'Kernel: $@ is ready' '(#'$(or $(KBUILD_BUILD_VERSION),`cat .version`)')'
|
||||
|
||||
endif
|
||||
|
||||
$(obj)/image: vmlinux FORCE
|
||||
$(call if_changed,strip)
|
||||
@echo ' kernel: $@ is ready'
|
||||
@$(kecho) 'Kernel: $@ is ready' '(#'$(or $(KBUILD_BUILD_VERSION),`cat .version`)')'
|
||||
|
||||
$(obj)/tftpboot.img: $(obj)/image $(obj)/piggyback System.map $(ROOT_IMG) FORCE
|
||||
$(call if_changed,elftoaout)
|
||||
|
@ -423,7 +423,6 @@ static inline void __iomem *ioremap(unsigned long offset, unsigned long size)
|
||||
return (void __iomem *)offset;
|
||||
}
|
||||
|
||||
#define ioremap_uc(X,Y) ioremap((X),(Y))
|
||||
#define ioremap_wc(X,Y) ioremap((X),(Y))
|
||||
#define ioremap_wt(X,Y) ioremap((X),(Y))
|
||||
static inline void __iomem *ioremap_np(unsigned long offset, unsigned long size)
|
||||
@ -470,12 +469,6 @@ static inline int sbus_can_burst64(void)
|
||||
struct device;
|
||||
void sbus_set_sbus64(struct device *, int);
|
||||
|
||||
/*
|
||||
* Convert a physical pointer to a virtual kernel pointer for /dev/mem
|
||||
* access
|
||||
*/
|
||||
#define xlate_dev_mem_ptr(p) __va(p)
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* !(__SPARC64_IO_H) */
|
||||
|
@ -19,14 +19,14 @@
|
||||
#include <asm/hibernate.h>
|
||||
|
||||
#ifdef CONFIG_SPARC32
|
||||
int sparc32_foo(void)
|
||||
static int __used sparc32_foo(void)
|
||||
{
|
||||
DEFINE(AOFF_thread_fork_kpsr,
|
||||
offsetof(struct thread_struct, fork_kpsr));
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
int sparc64_foo(void)
|
||||
static int __used sparc64_foo(void)
|
||||
{
|
||||
#ifdef CONFIG_HIBERNATION
|
||||
BLANK();
|
||||
@ -45,7 +45,7 @@ int sparc64_foo(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
int foo(void)
|
||||
static int __used foo(void)
|
||||
{
|
||||
BLANK();
|
||||
DEFINE(AOFF_task_thread, offsetof(struct task_struct, thread));
|
||||
|
@ -10,6 +10,7 @@
|
||||
* I hate traps on the sparc, grrr...
|
||||
*/
|
||||
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/sched/mm.h>
|
||||
#include <linux/sched/debug.h>
|
||||
#include <linux/mm_types.h>
|
||||
|
@ -9,6 +9,7 @@
|
||||
* I like traps on v9, :))))
|
||||
*/
|
||||
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/extable.h>
|
||||
#include <linux/sched/mm.h>
|
||||
#include <linux/sched/debug.h>
|
||||
|
@ -11,12 +11,10 @@
|
||||
#include <linux/time.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/types.h>
|
||||
#include <vdso/gettime.h>
|
||||
|
||||
#include "../../../../lib/vdso/gettimeofday.c"
|
||||
|
||||
extern int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz);
|
||||
extern __kernel_old_time_t __vdso_time(__kernel_old_time_t *t);
|
||||
|
||||
int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz)
|
||||
{
|
||||
return __cvdso_gettimeofday(tv, tz);
|
||||
@ -35,9 +33,6 @@ __kernel_old_time_t time(__kernel_old_time_t *t) __attribute__((weak, alias("__v
|
||||
|
||||
#if defined(CONFIG_X86_64) && !defined(BUILD_VDSO32_64)
|
||||
/* both 64-bit and x32 use these */
|
||||
extern int __vdso_clock_gettime(clockid_t clock, struct __kernel_timespec *ts);
|
||||
extern int __vdso_clock_getres(clockid_t clock, struct __kernel_timespec *res);
|
||||
|
||||
int __vdso_clock_gettime(clockid_t clock, struct __kernel_timespec *ts)
|
||||
{
|
||||
return __cvdso_clock_gettime(clock, ts);
|
||||
@ -56,9 +51,6 @@ int clock_getres(clockid_t, struct __kernel_timespec *)
|
||||
|
||||
#else
|
||||
/* i386 only */
|
||||
extern int __vdso_clock_gettime(clockid_t clock, struct old_timespec32 *ts);
|
||||
extern int __vdso_clock_getres(clockid_t clock, struct old_timespec32 *res);
|
||||
|
||||
int __vdso_clock_gettime(clockid_t clock, struct old_timespec32 *ts)
|
||||
{
|
||||
return __cvdso_clock_gettime32(clock, ts);
|
||||
|
@ -9,7 +9,6 @@ static inline bool arch_irq_work_has_interrupt(void)
|
||||
{
|
||||
return boot_cpu_has(X86_FEATURE_APIC);
|
||||
}
|
||||
extern void arch_irq_work_raise(void);
|
||||
#else
|
||||
static inline bool arch_irq_work_has_interrupt(void)
|
||||
{
|
||||
|
@ -14,7 +14,6 @@
|
||||
asmlinkage __visible notrace struct pt_regs *sync_regs(struct pt_regs *eregs);
|
||||
asmlinkage __visible notrace
|
||||
struct pt_regs *fixup_bad_iret(struct pt_regs *bad_regs);
|
||||
void __init trap_init(void);
|
||||
asmlinkage __visible noinstr struct pt_regs *vc_switch_off_ist(struct pt_regs *eregs);
|
||||
#endif
|
||||
|
||||
|
@ -337,8 +337,6 @@ u64 vdso_calc_delta(u64 cycles, u64 last, u64 mask, u32 mult)
|
||||
}
|
||||
#define vdso_calc_delta vdso_calc_delta
|
||||
|
||||
int __vdso_clock_gettime64(clockid_t clock, struct __kernel_timespec *ts);
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
|
||||
#endif /* __ASM_VDSO_GETTIMEOFDAY_H */
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include <linux/nmi.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/hardirq.h>
|
||||
#include <linux/atomic.h>
|
||||
|
@ -34,7 +34,7 @@ static inline unsigned long __generic_cmpxchg_local(volatile void *ptr,
|
||||
*(u16 *)ptr = (new & 0xffffu);
|
||||
break;
|
||||
case 4: prev = *(u32 *)ptr;
|
||||
if (prev == (old & 0xffffffffffu))
|
||||
if (prev == (old & 0xffffffffu))
|
||||
*(u32 *)ptr = (new & 0xffffffffu);
|
||||
break;
|
||||
case 8: prev = *(u64 *)ptr;
|
||||
|
@ -66,6 +66,9 @@ void irq_work_sync(struct irq_work *work);
|
||||
void irq_work_run(void);
|
||||
bool irq_work_needs_cpu(void);
|
||||
void irq_work_single(void *arg);
|
||||
|
||||
void arch_irq_work_raise(void);
|
||||
|
||||
#else
|
||||
static inline bool irq_work_needs_cpu(void) { return false; }
|
||||
static inline void irq_work_run(void) { }
|
||||
|
23
include/vdso/gettime.h
Normal file
23
include/vdso/gettime.h
Normal file
@ -0,0 +1,23 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _VDSO_GETTIME_H
|
||||
#define _VDSO_GETTIME_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct __kernel_timespec;
|
||||
struct timezone;
|
||||
|
||||
#if !defined(CONFIG_64BIT) || defined(BUILD_VDSO32_64)
|
||||
struct old_timespec32;
|
||||
int __vdso_clock_getres(clockid_t clock, struct old_timespec32 *res);
|
||||
int __vdso_clock_gettime(clockid_t clock, struct old_timespec32 *ts);
|
||||
#else
|
||||
int __vdso_clock_getres(clockid_t clock, struct __kernel_timespec *res);
|
||||
int __vdso_clock_gettime(clockid_t clock, struct __kernel_timespec *ts);
|
||||
#endif
|
||||
|
||||
__kernel_old_time_t __vdso_time(__kernel_old_time_t *t);
|
||||
int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz);
|
||||
int __vdso_clock_gettime64(clockid_t clock, struct __kernel_timespec *ts);
|
||||
|
||||
#endif
|
@ -74,7 +74,6 @@ arch/arc/include/uapi/asm/page.h:CONFIG_ARC_PAGE_SIZE_16K
|
||||
arch/arc/include/uapi/asm/page.h:CONFIG_ARC_PAGE_SIZE_4K
|
||||
arch/arc/include/uapi/asm/swab.h:CONFIG_ARC_HAS_SWAPE
|
||||
arch/arm/include/uapi/asm/ptrace.h:CONFIG_CPU_ENDIAN_BE8
|
||||
arch/hexagon/include/uapi/asm/user.h:CONFIG_HEXAGON_ARCH_VERSION
|
||||
arch/m68k/include/uapi/asm/ptrace.h:CONFIG_COLDFIRE
|
||||
arch/nios2/include/uapi/asm/swab.h:CONFIG_NIOS2_CI_SWAB_NO
|
||||
arch/nios2/include/uapi/asm/swab.h:CONFIG_NIOS2_CI_SWAB_SUPPORT
|
||||
|
Loading…
Reference in New Issue
Block a user