Rev 1787 | Rev 1823 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 1787 | Rev 1822 | ||
|---|---|---|---|
| Line 24... | Line 24... | ||
| 24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| 26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 27 | */ |
27 | */ |
| 28 | 28 | ||
| 29 | /** @addtogroup sparc64mm |
29 | /** @addtogroup sparc64mm |
| 30 | * @{ |
30 | * @{ |
| 31 | */ |
31 | */ |
| 32 | /** @file |
32 | /** @file |
| 33 | */ |
33 | */ |
| 34 | 34 | ||
| 35 | #ifndef __sparc64_MMU_H__ |
35 | #ifndef __sparc64_MMU_H__ |
| 36 | #define __sparc64_MMU_H__ |
36 | #define __sparc64_MMU_H__ |
| 37 | 37 | ||
| 38 | #include <arch/asm.h> |
- | |
| 39 | #include <arch/barrier.h> |
- | |
| 40 | #include <arch/types.h> |
- | |
| 41 | #include <typedefs.h> |
- | |
| 42 | - | ||
| 43 | /** LSU Control Register ASI. */ |
38 | /** LSU Control Register ASI. */ |
| 44 | #define ASI_LSU_CONTROL_REG 0x45 /**< Load/Store Unit Control Register. */ |
39 | #define ASI_LSU_CONTROL_REG 0x45 /**< Load/Store Unit Control Register. */ |
| 45 | 40 | ||
| 46 | /** I-MMU ASIs. */ |
41 | /** I-MMU ASIs. */ |
| 47 | #define ASI_IMMU 0x50 |
42 | #define ASI_IMMU 0x50 |
| Line 77... | Line 72... | ||
| 77 | #define VA_DMMU_TSB_BASE 0x28 /**< DMMU TSB base register. */ |
72 | #define VA_DMMU_TSB_BASE 0x28 /**< DMMU TSB base register. */ |
| 78 | #define VA_DMMU_TAG_ACCESS 0x30 /**< DMMU TLB tag access register. */ |
73 | #define VA_DMMU_TAG_ACCESS 0x30 /**< DMMU TLB tag access register. */ |
| 79 | #define VA_DMMU_VA_WATCHPOINT_REG 0x38 /**< DMMU VA data watchpoint register. */ |
74 | #define VA_DMMU_VA_WATCHPOINT_REG 0x38 /**< DMMU VA data watchpoint register. */ |
| 80 | #define VA_DMMU_PA_WATCHPOINT_REG 0x40 /**< DMMU PA data watchpoint register. */ |
75 | #define VA_DMMU_PA_WATCHPOINT_REG 0x40 /**< DMMU PA data watchpoint register. */ |
| 81 | 76 | ||
| - | 77 | #ifndef __ASM__ |
|
| - | 78 | ||
| - | 79 | #include <arch/asm.h> |
|
| - | 80 | #include <arch/barrier.h> |
|
| - | 81 | #include <arch/types.h> |
|
| - | 82 | #include <typedefs.h> |
|
| 82 | 83 | ||
| 83 | /** LSU Control Register. */ |
84 | /** LSU Control Register. */ |
| 84 | union lsu_cr_reg { |
85 | union lsu_cr_reg { |
| 85 | uint64_t value; |
86 | uint64_t value; |
| 86 | struct { |
87 | struct { |
| Line 100... | Line 101... | ||
| 100 | 101 | ||
| 101 | } __attribute__ ((packed)); |
102 | } __attribute__ ((packed)); |
| 102 | }; |
103 | }; |
| 103 | typedef union lsu_cr_reg lsu_cr_reg_t; |
104 | typedef union lsu_cr_reg lsu_cr_reg_t; |
| 104 | 105 | ||
| 105 | - | ||
| 106 | #define immu_enable() immu_set(true) |
- | |
| 107 | #define immu_disable() immu_set(false) |
- | |
| 108 | #define dmmu_enable() dmmu_set(true) |
- | |
| 109 | #define dmmu_disable() dmmu_set(false) |
- | |
| 110 | - | ||
| 111 | /** Disable or Enable IMMU. */ |
106 | #endif /* !__ASM__ */ |
| 112 | static inline void immu_set(bool enable) |
- | |
| 113 | { |
- | |
| 114 | lsu_cr_reg_t cr; |
- | |
| 115 | - | ||
| 116 | cr.value = asi_u64_read(ASI_LSU_CONTROL_REG, 0); |
- | |
| 117 | cr.im = enable; |
- | |
| 118 | asi_u64_write(ASI_LSU_CONTROL_REG, 0, cr.value); |
- | |
| 119 | membar(); |
- | |
| 120 | } |
- | |
| 121 | - | ||
| 122 | /** Disable or Enable DMMU. */ |
- | |
| 123 | static inline void dmmu_set(bool enable) |
- | |
| 124 | { |
- | |
| 125 | lsu_cr_reg_t cr; |
- | |
| 126 | - | ||
| 127 | cr.value = asi_u64_read(ASI_LSU_CONTROL_REG, 0); |
- | |
| 128 | cr.dm = enable; |
- | |
| 129 | asi_u64_write(ASI_LSU_CONTROL_REG, 0, cr.value); |
- | |
| 130 | membar(); |
- | |
| 131 | } |
- | |
| 132 | 107 | ||
| 133 | #endif |
108 | #endif |
| 134 | 109 | ||
| 135 | /** @} |
110 | /** @} |
| 136 | */ |
111 | */ |
| 137 | - | ||