forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.0 KiB
82 lines
2.0 KiB
/* SPDX-License-Identifier: GPL-2.0 */ |
|
// Copyright (C) 2005-2017 Andes Technology Corporation |
|
|
|
#ifndef _ASM_NDS32_NDS32_H_ |
|
#define _ASM_NDS32_NDS32_H_ |
|
|
|
#include <asm/bitfield.h> |
|
#include <asm/cachectl.h> |
|
|
|
#ifndef __ASSEMBLY__ |
|
#include <linux/init.h> |
|
#include <asm/barrier.h> |
|
#include <nds32_intrinsic.h> |
|
|
|
#ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE |
|
#define FP_OFFSET (-3) |
|
#else |
|
#define FP_OFFSET (-2) |
|
#endif |
|
#define LP_OFFSET (-1) |
|
|
|
extern void __init early_trap_init(void); |
|
static inline void GIE_ENABLE(void) |
|
{ |
|
mb(); |
|
__nds32__gie_en(); |
|
} |
|
|
|
static inline void GIE_DISABLE(void) |
|
{ |
|
mb(); |
|
__nds32__gie_dis(); |
|
} |
|
|
|
static inline unsigned long CACHE_SET(unsigned char cache) |
|
{ |
|
|
|
if (cache == ICACHE) |
|
return 64 << ((__nds32__mfsr(NDS32_SR_ICM_CFG) & ICM_CFG_mskISET) >> |
|
ICM_CFG_offISET); |
|
else |
|
return 64 << ((__nds32__mfsr(NDS32_SR_DCM_CFG) & DCM_CFG_mskDSET) >> |
|
DCM_CFG_offDSET); |
|
} |
|
|
|
static inline unsigned long CACHE_WAY(unsigned char cache) |
|
{ |
|
|
|
if (cache == ICACHE) |
|
return 1 + |
|
((__nds32__mfsr(NDS32_SR_ICM_CFG) & ICM_CFG_mskIWAY) >> ICM_CFG_offIWAY); |
|
else |
|
return 1 + |
|
((__nds32__mfsr(NDS32_SR_DCM_CFG) & DCM_CFG_mskDWAY) >> DCM_CFG_offDWAY); |
|
} |
|
|
|
static inline unsigned long CACHE_LINE_SIZE(unsigned char cache) |
|
{ |
|
|
|
if (cache == ICACHE) |
|
return 8 << |
|
(((__nds32__mfsr(NDS32_SR_ICM_CFG) & ICM_CFG_mskISZ) >> ICM_CFG_offISZ) - 1); |
|
else |
|
return 8 << |
|
(((__nds32__mfsr(NDS32_SR_DCM_CFG) & DCM_CFG_mskDSZ) >> DCM_CFG_offDSZ) - 1); |
|
} |
|
|
|
#endif /* __ASSEMBLY__ */ |
|
|
|
#define IVB_BASE PHYS_OFFSET /* in user space for intr/exc/trap/break table base, 64KB aligned |
|
* We defined at the start of the physical memory */ |
|
|
|
/* dispatched sub-entry exception handler numbering */ |
|
#define RD_PROT 0 /* read protrection */ |
|
#define WRT_PROT 1 /* write protection */ |
|
#define NOEXEC 2 /* non executable */ |
|
#define PAGE_MODIFY 3 /* page modified */ |
|
#define ACC_BIT 4 /* access bit */ |
|
#define RESVED_PTE 5 /* reserved PTE attribute */ |
|
/* reserved 6 ~ 16 */ |
|
|
|
#endif /* _ASM_NDS32_NDS32_H_ */
|
|
|