riscv: rename SR_* constants to match the spec
Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
This commit is contained in:
committed by
Palmer Dabbelt
parent
c163fb38ca
commit
1125203c13
@@ -17,9 +17,9 @@
|
|||||||
#include <linux/const.h>
|
#include <linux/const.h>
|
||||||
|
|
||||||
/* Status register flags */
|
/* Status register flags */
|
||||||
#define SR_IE _AC(0x00000002, UL) /* Interrupt Enable */
|
#define SR_SIE _AC(0x00000002, UL) /* Supervisor Interrupt Enable */
|
||||||
#define SR_PIE _AC(0x00000020, UL) /* Previous IE */
|
#define SR_SPIE _AC(0x00000020, UL) /* Previous Supervisor IE */
|
||||||
#define SR_PS _AC(0x00000100, UL) /* Previously Supervisor */
|
#define SR_SPP _AC(0x00000100, UL) /* Previously Supervisor */
|
||||||
#define SR_SUM _AC(0x00040000, UL) /* Supervisor may access User Memory */
|
#define SR_SUM _AC(0x00040000, UL) /* Supervisor may access User Memory */
|
||||||
|
|
||||||
#define SR_FS _AC(0x00006000, UL) /* Floating-point Status */
|
#define SR_FS _AC(0x00006000, UL) /* Floating-point Status */
|
||||||
|
|||||||
@@ -27,25 +27,25 @@ static inline unsigned long arch_local_save_flags(void)
|
|||||||
/* unconditionally enable interrupts */
|
/* unconditionally enable interrupts */
|
||||||
static inline void arch_local_irq_enable(void)
|
static inline void arch_local_irq_enable(void)
|
||||||
{
|
{
|
||||||
csr_set(sstatus, SR_IE);
|
csr_set(sstatus, SR_SIE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* unconditionally disable interrupts */
|
/* unconditionally disable interrupts */
|
||||||
static inline void arch_local_irq_disable(void)
|
static inline void arch_local_irq_disable(void)
|
||||||
{
|
{
|
||||||
csr_clear(sstatus, SR_IE);
|
csr_clear(sstatus, SR_SIE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get status and disable interrupts */
|
/* get status and disable interrupts */
|
||||||
static inline unsigned long arch_local_irq_save(void)
|
static inline unsigned long arch_local_irq_save(void)
|
||||||
{
|
{
|
||||||
return csr_read_clear(sstatus, SR_IE);
|
return csr_read_clear(sstatus, SR_SIE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* test flags */
|
/* test flags */
|
||||||
static inline int arch_irqs_disabled_flags(unsigned long flags)
|
static inline int arch_irqs_disabled_flags(unsigned long flags)
|
||||||
{
|
{
|
||||||
return !(flags & SR_IE);
|
return !(flags & SR_SIE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* test hardware interrupt enable bit */
|
/* test hardware interrupt enable bit */
|
||||||
@@ -57,7 +57,7 @@ static inline int arch_irqs_disabled(void)
|
|||||||
/* set interrupt enabled status */
|
/* set interrupt enabled status */
|
||||||
static inline void arch_local_irq_restore(unsigned long flags)
|
static inline void arch_local_irq_restore(unsigned long flags)
|
||||||
{
|
{
|
||||||
csr_set(sstatus, flags & SR_IE);
|
csr_set(sstatus, flags & SR_SIE);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* _ASM_RISCV_IRQFLAGS_H */
|
#endif /* _ASM_RISCV_IRQFLAGS_H */
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ struct pt_regs {
|
|||||||
#define REG_FMT "%08lx"
|
#define REG_FMT "%08lx"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define user_mode(regs) (((regs)->sstatus & SR_PS) == 0)
|
#define user_mode(regs) (((regs)->sstatus & SR_SPP) == 0)
|
||||||
|
|
||||||
|
|
||||||
/* Helpers for working with the instruction pointer */
|
/* Helpers for working with the instruction pointer */
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ handle_syscall:
|
|||||||
addi s2, s2, 0x4
|
addi s2, s2, 0x4
|
||||||
REG_S s2, PT_SEPC(sp)
|
REG_S s2, PT_SEPC(sp)
|
||||||
/* System calls run with interrupts enabled */
|
/* System calls run with interrupts enabled */
|
||||||
csrs sstatus, SR_IE
|
csrs sstatus, SR_SIE
|
||||||
/* Trace syscalls, but only if requested by the user. */
|
/* Trace syscalls, but only if requested by the user. */
|
||||||
REG_L t0, TASK_TI_FLAGS(tp)
|
REG_L t0, TASK_TI_FLAGS(tp)
|
||||||
andi t0, t0, _TIF_SYSCALL_TRACE
|
andi t0, t0, _TIF_SYSCALL_TRACE
|
||||||
@@ -224,8 +224,8 @@ ret_from_syscall:
|
|||||||
|
|
||||||
ret_from_exception:
|
ret_from_exception:
|
||||||
REG_L s0, PT_SSTATUS(sp)
|
REG_L s0, PT_SSTATUS(sp)
|
||||||
csrc sstatus, SR_IE
|
csrc sstatus, SR_SIE
|
||||||
andi s0, s0, SR_PS
|
andi s0, s0, SR_SPP
|
||||||
bnez s0, restore_all
|
bnez s0, restore_all
|
||||||
|
|
||||||
resume_userspace:
|
resume_userspace:
|
||||||
@@ -255,7 +255,7 @@ work_pending:
|
|||||||
bnez s1, work_resched
|
bnez s1, work_resched
|
||||||
work_notifysig:
|
work_notifysig:
|
||||||
/* Handle pending signals and notify-resume requests */
|
/* Handle pending signals and notify-resume requests */
|
||||||
csrs sstatus, SR_IE /* Enable interrupts for do_notify_resume() */
|
csrs sstatus, SR_SIE /* Enable interrupts for do_notify_resume() */
|
||||||
move a0, sp /* pt_regs */
|
move a0, sp /* pt_regs */
|
||||||
move a1, s0 /* current_thread_info->flags */
|
move a1, s0 /* current_thread_info->flags */
|
||||||
tail do_notify_resume
|
tail do_notify_resume
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ void show_regs(struct pt_regs *regs)
|
|||||||
void start_thread(struct pt_regs *regs, unsigned long pc,
|
void start_thread(struct pt_regs *regs, unsigned long pc,
|
||||||
unsigned long sp)
|
unsigned long sp)
|
||||||
{
|
{
|
||||||
regs->sstatus = SR_PIE /* User mode, irqs on */ | SR_FS_INITIAL;
|
regs->sstatus = SR_SPIE /* User mode, irqs on */ | SR_FS_INITIAL;
|
||||||
regs->sepc = pc;
|
regs->sepc = pc;
|
||||||
regs->sp = sp;
|
regs->sp = sp;
|
||||||
set_fs(USER_DS);
|
set_fs(USER_DS);
|
||||||
@@ -110,7 +110,7 @@ int copy_thread(unsigned long clone_flags, unsigned long usp,
|
|||||||
const register unsigned long gp __asm__ ("gp");
|
const register unsigned long gp __asm__ ("gp");
|
||||||
memset(childregs, 0, sizeof(struct pt_regs));
|
memset(childregs, 0, sizeof(struct pt_regs));
|
||||||
childregs->gp = gp;
|
childregs->gp = gp;
|
||||||
childregs->sstatus = SR_PS | SR_PIE; /* Supervisor, irqs on */
|
childregs->sstatus = SR_SPP | SR_SPIE; /* Supervisor, irqs on */
|
||||||
|
|
||||||
p->thread.ra = (unsigned long)ret_from_kernel_thread;
|
p->thread.ra = (unsigned long)ret_from_kernel_thread;
|
||||||
p->thread.s[0] = usp; /* fn */
|
p->thread.s[0] = usp; /* fn */
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs)
|
|||||||
goto vmalloc_fault;
|
goto vmalloc_fault;
|
||||||
|
|
||||||
/* Enable interrupts if they were enabled in the parent context. */
|
/* Enable interrupts if they were enabled in the parent context. */
|
||||||
if (likely(regs->sstatus & SR_PIE))
|
if (likely(regs->sstatus & SR_SPIE))
|
||||||
local_irq_enable();
|
local_irq_enable();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user