mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
OpenRISC updates for 6.6
Updates: - Fixes from me to cleanup all compiler warnings reported under arch/openrisc. - One cleanup from Linus Walleij to convert pfn macros to static inlines. -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEE2cRzVK74bBA6Je/xw7McLV5mJ+QFAmT2LXMACgkQw7McLV5m J+QAlhAAwNrKSrwKBhO06R2MlJz7ls4CSRD1pceefRzLzCyCJJuGAr1eIXvHPspr eY8hgEva5hvhDE6Ey3GDTLUT5r8HHNGpdpYlolX0PIzmGpX/lEhD+kL12mcY3cym PsUA++GPJpldxY9wG99T2MZqvBbL6Wnd++heVeCytzfQJHRT2EeqH9eljryh1aoD sf9PAq59xjHPFsoZysKaTccmM8hM/PYAN06vSdFgk4HIAYvGOTyQ/4AP0HmJ4XkE TE/gdSqPOFq8avegwg6AlmegQvl3DVglVFeP7M8BosXDw8emaGyv7hB95gCchud2 EnFb8WE/BGOQQr05GpaPQGGjWxxMEFEwEMTPeFUbhybEzUKCy7ujpEiQ8zwdq/dp i3NSI2o07HaTDSYGzfCFVmP/R1ihraRVE8rzdfIK9a7rh1JSLE7tWv8rpSB5FWSA 0gIRI9VV4XPHfrudw7j4Dsun41X4AsvolaRaxCW83wHzT9sREKl1Xfo8WEtEeY2Z MXek4wLU81qU+PfgrVtPk2+uqp2tK3lMtElXTOqktKUs5hyN+52nTdOShiP8yQB5 jTPi/E5CVDlsMYUfueppJZE/nEHW93LmwW5Ktebmh92b2GeStZ33PVa9ItaVPDeT pqWUO5EiM/h9iTkZs+3RhbOWvcbRf7+H7c5xiGupaqvoS2YVfC4= =VGnr -----END PGP SIGNATURE----- Merge tag 'for-linus' of https://github.com/openrisc/linux Pull OpenRISC updates from Stafford Horne: - Fixes from me to cleanup all compiler warnings reported under arch/openrisc - One cleanup from Linus Walleij to convert pfn macros to static inlines * tag 'for-linus' of https://github.com/openrisc/linux: openrisc: Remove kernel-doc marker from ioremap comment openrisc: Remove unused tlb_init function openriac: Remove unused nommu_dump_state function openrisc: Include cpu.h and switch_to.h for prototypes openrisc: Add prototype for die to bug.h openrisc: Add prototype for show_registers to processor.h openrisc: Declare do_signal function as static openrisc: Add missing prototypes for assembly called fnctions openrisc: Make pfn accessors statics inlines
This commit is contained in:
commit
3dceb8a9a9
11
arch/openrisc/include/asm/bug.h
Normal file
11
arch/openrisc/include/asm/bug.h
Normal file
@ -0,0 +1,11 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
#ifndef __ASM_OPENRISC_BUG_H
|
||||
#define __ASM_OPENRISC_BUG_H
|
||||
|
||||
#include <asm-generic/bug.h>
|
||||
|
||||
struct pt_regs;
|
||||
|
||||
void __noreturn die(const char *str, struct pt_regs *regs, long err);
|
||||
|
||||
#endif /* __ASM_OPENRISC_BUG_H */
|
@ -72,8 +72,15 @@ typedef struct page *pgtable_t;
|
||||
#define __va(x) ((void *)((unsigned long)(x) + PAGE_OFFSET))
|
||||
#define __pa(x) ((unsigned long) (x) - PAGE_OFFSET)
|
||||
|
||||
#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 virt_to_page(addr) \
|
||||
(mem_map + (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT))
|
||||
|
@ -73,6 +73,7 @@ struct thread_struct {
|
||||
|
||||
void start_thread(struct pt_regs *regs, unsigned long nip, unsigned long sp);
|
||||
unsigned long __get_wchan(struct task_struct *p);
|
||||
void show_registers(struct pt_regs *regs);
|
||||
|
||||
#define cpu_relax() barrier()
|
||||
|
||||
|
@ -14,6 +14,7 @@
|
||||
*/
|
||||
|
||||
#define __KERNEL_SYSCALLS__
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/sched/debug.h>
|
||||
@ -38,6 +39,7 @@
|
||||
#include <asm/io.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/spr_defs.h>
|
||||
#include <asm/switch_to.h>
|
||||
|
||||
#include <linux/smp.h>
|
||||
|
||||
@ -119,8 +121,6 @@ void flush_thread(void)
|
||||
|
||||
void show_regs(struct pt_regs *regs)
|
||||
{
|
||||
extern void show_registers(struct pt_regs *regs);
|
||||
|
||||
show_regs_print_info(KERN_DEFAULT);
|
||||
/* __PHX__ cleanup this mess */
|
||||
show_registers(regs);
|
||||
|
@ -27,6 +27,10 @@
|
||||
#include <asm/thread_info.h>
|
||||
#include <asm/page.h>
|
||||
|
||||
asmlinkage long do_syscall_trace_enter(struct pt_regs *regs);
|
||||
|
||||
asmlinkage void do_syscall_trace_leave(struct pt_regs *regs);
|
||||
|
||||
/*
|
||||
* Copy the thread state to a regset that can be interpreted by userspace.
|
||||
*
|
||||
|
@ -34,6 +34,11 @@ struct rt_sigframe {
|
||||
unsigned char retcode[16]; /* trampoline code */
|
||||
};
|
||||
|
||||
asmlinkage long _sys_rt_sigreturn(struct pt_regs *regs);
|
||||
|
||||
asmlinkage int do_work_pending(struct pt_regs *regs, unsigned int thread_flags,
|
||||
int syscall);
|
||||
|
||||
static int restore_sigcontext(struct pt_regs *regs,
|
||||
struct sigcontext __user *sc)
|
||||
{
|
||||
@ -224,7 +229,7 @@ handle_signal(struct ksignal *ksig, struct pt_regs *regs)
|
||||
* mode below.
|
||||
*/
|
||||
|
||||
int do_signal(struct pt_regs *regs, int syscall)
|
||||
static int do_signal(struct pt_regs *regs, int syscall)
|
||||
{
|
||||
struct ksignal ksig;
|
||||
unsigned long continue_addr = 0;
|
||||
|
@ -23,6 +23,8 @@
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/time.h>
|
||||
|
||||
asmlinkage __init void secondary_start_kernel(void);
|
||||
|
||||
static void (*smp_cross_call)(const struct cpumask *, unsigned int);
|
||||
|
||||
unsigned long secondary_release = -1;
|
||||
|
@ -25,6 +25,8 @@
|
||||
#include <asm/cpuinfo.h>
|
||||
#include <asm/time.h>
|
||||
|
||||
irqreturn_t __irq_entry timer_interrupt(struct pt_regs *regs);
|
||||
|
||||
/* Test the timer ticks to count, used in sync routine */
|
||||
inline void openrisc_timer_set(unsigned long count)
|
||||
{
|
||||
|
@ -30,14 +30,23 @@
|
||||
#include <linux/kallsyms.h>
|
||||
#include <linux/uaccess.h>
|
||||
|
||||
#include <asm/bug.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/unwinder.h>
|
||||
#include <asm/sections.h>
|
||||
|
||||
static int kstack_depth_to_print = 0x180;
|
||||
int lwa_flag;
|
||||
static unsigned long __user *lwa_addr;
|
||||
|
||||
asmlinkage void unhandled_exception(struct pt_regs *regs, int ea, int vector);
|
||||
asmlinkage void do_trap(struct pt_regs *regs, unsigned long address);
|
||||
asmlinkage void do_fpe_trap(struct pt_regs *regs, unsigned long address);
|
||||
asmlinkage void do_unaligned_access(struct pt_regs *regs, unsigned long address);
|
||||
asmlinkage void do_bus_fault(struct pt_regs *regs, unsigned long address);
|
||||
asmlinkage void do_illegal_instruction(struct pt_regs *regs,
|
||||
unsigned long address);
|
||||
|
||||
static void print_trace(void *data, unsigned long addr, int reliable)
|
||||
{
|
||||
const char *loglvl = data;
|
||||
@ -143,80 +152,6 @@ bad:
|
||||
printk("\n");
|
||||
}
|
||||
|
||||
void nommu_dump_state(struct pt_regs *regs,
|
||||
unsigned long ea, unsigned long vector)
|
||||
{
|
||||
int i;
|
||||
unsigned long addr, stack = regs->sp;
|
||||
|
||||
printk("\n\r[nommu_dump_state] :: ea %lx, vector %lx\n\r", ea, vector);
|
||||
|
||||
printk("CPU #: %d\n"
|
||||
" PC: %08lx SR: %08lx SP: %08lx\n",
|
||||
0, regs->pc, regs->sr, regs->sp);
|
||||
printk("GPR00: %08lx GPR01: %08lx GPR02: %08lx GPR03: %08lx\n",
|
||||
0L, regs->gpr[1], regs->gpr[2], regs->gpr[3]);
|
||||
printk("GPR04: %08lx GPR05: %08lx GPR06: %08lx GPR07: %08lx\n",
|
||||
regs->gpr[4], regs->gpr[5], regs->gpr[6], regs->gpr[7]);
|
||||
printk("GPR08: %08lx GPR09: %08lx GPR10: %08lx GPR11: %08lx\n",
|
||||
regs->gpr[8], regs->gpr[9], regs->gpr[10], regs->gpr[11]);
|
||||
printk("GPR12: %08lx GPR13: %08lx GPR14: %08lx GPR15: %08lx\n",
|
||||
regs->gpr[12], regs->gpr[13], regs->gpr[14], regs->gpr[15]);
|
||||
printk("GPR16: %08lx GPR17: %08lx GPR18: %08lx GPR19: %08lx\n",
|
||||
regs->gpr[16], regs->gpr[17], regs->gpr[18], regs->gpr[19]);
|
||||
printk("GPR20: %08lx GPR21: %08lx GPR22: %08lx GPR23: %08lx\n",
|
||||
regs->gpr[20], regs->gpr[21], regs->gpr[22], regs->gpr[23]);
|
||||
printk("GPR24: %08lx GPR25: %08lx GPR26: %08lx GPR27: %08lx\n",
|
||||
regs->gpr[24], regs->gpr[25], regs->gpr[26], regs->gpr[27]);
|
||||
printk("GPR28: %08lx GPR29: %08lx GPR30: %08lx GPR31: %08lx\n",
|
||||
regs->gpr[28], regs->gpr[29], regs->gpr[30], regs->gpr[31]);
|
||||
printk(" RES: %08lx oGPR11: %08lx\n",
|
||||
regs->gpr[11], regs->orig_gpr11);
|
||||
|
||||
printk("Process %s (pid: %d, stackpage=%08lx)\n",
|
||||
((struct task_struct *)(__pa(current)))->comm,
|
||||
((struct task_struct *)(__pa(current)))->pid,
|
||||
(unsigned long)current);
|
||||
|
||||
printk("\nStack: ");
|
||||
printk("Stack dump [0x%08lx]:\n", (unsigned long)stack);
|
||||
for (i = 0; i < kstack_depth_to_print; i++) {
|
||||
if (((long)stack & (THREAD_SIZE - 1)) == 0)
|
||||
break;
|
||||
stack++;
|
||||
|
||||
printk("%lx :: sp + %02d: 0x%08lx\n", stack, i * 4,
|
||||
*((unsigned long *)(__pa(stack))));
|
||||
}
|
||||
printk("\n");
|
||||
|
||||
printk("Call Trace: ");
|
||||
i = 1;
|
||||
while (((long)stack & (THREAD_SIZE - 1)) != 0) {
|
||||
addr = *((unsigned long *)__pa(stack));
|
||||
stack++;
|
||||
|
||||
if (kernel_text_address(addr)) {
|
||||
if (i && ((i % 6) == 0))
|
||||
printk("\n ");
|
||||
printk(" [<%08lx>]", addr);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
printk("\n");
|
||||
|
||||
printk("\nCode: ");
|
||||
|
||||
for (i = -24; i < 24; i++) {
|
||||
unsigned long word;
|
||||
|
||||
word = ((unsigned long *)(__pa(regs->pc)))[i];
|
||||
|
||||
print_data(regs->pc, word, i);
|
||||
}
|
||||
printk("\n");
|
||||
}
|
||||
|
||||
/* This is normally the 'Oops' routine */
|
||||
void __noreturn die(const char *str, struct pt_regs *regs, long err)
|
||||
{
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include <linux/perf_event.h>
|
||||
|
||||
#include <linux/uaccess.h>
|
||||
#include <asm/bug.h>
|
||||
#include <asm/mmu_context.h>
|
||||
#include <asm/siginfo.h>
|
||||
#include <asm/signal.h>
|
||||
@ -30,7 +31,8 @@
|
||||
*/
|
||||
volatile pgd_t *current_pgd[NR_CPUS];
|
||||
|
||||
extern void __noreturn die(char *, struct pt_regs *, long);
|
||||
asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long address,
|
||||
unsigned long vector, int write_acc);
|
||||
|
||||
/*
|
||||
* This routine handles page faults. It determines the address,
|
||||
|
@ -123,8 +123,6 @@ static void __init map_ram(void)
|
||||
|
||||
void __init paging_init(void)
|
||||
{
|
||||
extern void tlb_init(void);
|
||||
|
||||
int i;
|
||||
|
||||
printk(KERN_INFO "Setting up paging and PTEs.\n");
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
extern int mem_init_done;
|
||||
|
||||
/**
|
||||
/*
|
||||
* OK, this one's a bit tricky... ioremap can get called before memory is
|
||||
* initialized (early serial console does this) and will want to alloc a page
|
||||
* for its mapping. No userspace pages will ever get allocated before memory
|
||||
|
@ -182,12 +182,3 @@ void destroy_context(struct mm_struct *mm)
|
||||
flush_tlb_mm(mm);
|
||||
|
||||
}
|
||||
|
||||
/* called once during VM initialization, from init.c */
|
||||
|
||||
void __init tlb_init(void)
|
||||
{
|
||||
/* Do nothing... */
|
||||
/* invalidate the entire TLB */
|
||||
/* flush_tlb_all(); */
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user