arch/riscv: Update encoding.h and dependent files
I copied it from commit e10d2def7d of spike and made sure the copyright header is still there. Change-Id: Ie8b56cd2f4855b97d36a112a195866f4ff0feec5 Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net> Reviewed-on: https://review.coreboot.org/15832 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
6e1884ff5d
commit
c42b5917af
File diff suppressed because it is too large
Load Diff
@ -30,8 +30,8 @@
|
||||
|
||||
#include <arch/encoding.h>
|
||||
|
||||
#define disable_irqsave() clear_csr(sstatus, SSTATUS_IE)
|
||||
#define enable_irqrestore(flags) set_csr(sstatus, (flags) & SSTATUS_IE)
|
||||
#define disable_irqsave() clear_csr(mstatus, MSTATUS_MIE)
|
||||
#define enable_irqrestore(flags) set_csr(mstatus, (flags) & MSTATUS_MIE)
|
||||
|
||||
typedef struct { int lock; } spinlock_t;
|
||||
#define SPINLOCK_INIT {0}
|
||||
|
@ -42,15 +42,18 @@ size_t pte_ppn(pte_t pte)
|
||||
|
||||
pte_t ptd_create(uintptr_t ppn)
|
||||
{
|
||||
return (ppn << PTE_PPN_SHIFT) | PTE_V | PTE_TYPE_TABLE;
|
||||
return (ppn << PTE_PPN_SHIFT) | PTE_V;
|
||||
}
|
||||
|
||||
pte_t pte_create(uintptr_t ppn, int prot, int user)
|
||||
{
|
||||
pte_t pte = (ppn << PTE_PPN_SHIFT) | PTE_V;
|
||||
if (prot & PROT_WRITE) pte |= PTE_TYPE_URW_SRW;
|
||||
if (prot & PROT_EXEC) pte |= PTE_TYPE_URX_SRX;
|
||||
if (!user) pte |= PTE_TYPE_SR;
|
||||
pte_t pte = (ppn << PTE_PPN_SHIFT) | PTE_R | PTE_V;
|
||||
if (prot & PROT_WRITE)
|
||||
pte |= PTE_W;
|
||||
if (prot & PROT_EXEC)
|
||||
pte |= PTE_X;
|
||||
if (user)
|
||||
pte |= PTE_U;
|
||||
return pte;
|
||||
}
|
||||
|
||||
@ -127,10 +130,6 @@ void mstatus_init(void)
|
||||
// supervisor support is required
|
||||
|
||||
uintptr_t ms = 0;
|
||||
ms = INSERT_FIELD(ms, MSTATUS_PRV, PRV_M);
|
||||
ms = INSERT_FIELD(ms, MSTATUS_PRV1, PRV_S);
|
||||
ms = INSERT_FIELD(ms, MSTATUS_PRV2, PRV_U);
|
||||
ms = INSERT_FIELD(ms, MSTATUS_IE2, 1);
|
||||
ms = INSERT_FIELD(ms, MSTATUS_FS, 3);
|
||||
ms = INSERT_FIELD(ms, MSTATUS_XS, 3);
|
||||
write_csr(mstatus, ms);
|
||||
|
Loading…
x
Reference in New Issue
Block a user