Changeset b6fba84 in mainline for arch/sparc64/include/mm/tlb.h


Ignore:
Timestamp:
2006-02-24T11:58:09Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
68656282
Parents:
0d3ff9a
Message:

sparc64 work.
Add more MMU helper functions and make data TLB miss handler more verbose.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/sparc64/include/mm/tlb.h

    r0d3ff9a rb6fba84  
    4747#define PAGESIZE_4M     3
    4848
     49union tlb_context_reg {
     50        __u64 v;
     51        struct {
     52                unsigned long : 51;
     53                unsigned context : 13;          /**< Context/ASID. */
     54        } __attribute__ ((packed));
     55};
     56typedef union tlb_context_reg tlb_context_reg_t;
     57
    4958/** I-/D-TLB Data In/Access Register type. */
    5059typedef tte_data_t tlb_data_t;
     
    95104typedef union tlb_demap_addr tlb_demap_addr_t;
    96105
     106/** TLB Synchronous Fault Status Register. */
     107union tlb_sfsr_reg {
     108        __u64 value;
     109        struct {
     110                unsigned long : 39;     /**< Implementation dependent. */
     111                unsigned nf : 1;        /**< Nonfaulting load. */
     112                unsigned asi : 8;       /**< ASI. */
     113                unsigned tm : 1;        /**< TLB miss. */
     114                unsigned : 3;
     115                unsigned ft : 5;        /**< Fault type. */
     116                unsigned e : 1;         /**< Side-effect bit. */
     117                unsigned ct : 2;        /**< Context Register selection. */
     118                unsigned pr : 1;        /**< Privilege bit. */
     119                unsigned w : 1;         /**< Write bit. */
     120                unsigned ow : 1;        /**< Overwrite bit. */
     121                unsigned fv : 1;        /**< Fayult Valid bit. */
     122        } __attribute__ ((packed));
     123};
     124typedef union tlb_sfsr_reg tlb_sfsr_reg_t;
     125
     126/** Read MMU Primary Context Register.
     127 *
     128 * @return Current value of Primary Context Register.
     129 */
     130static inline __u64 mmu_primary_context_read(void)
     131{
     132        return asi_u64_read(ASI_DMMU, VA_PRIMARY_CONTEXT_REG);
     133}
     134
     135/** Write MMU Primary Context Register.
     136 *
     137 * @param v New value of Primary Context Register.
     138 */
     139static inline void mmu_primary_context_write(__u64 v)
     140{
     141        asi_u64_write(ASI_DMMU, VA_PRIMARY_CONTEXT_REG, v);
     142        flush();
     143}
     144
     145/** Read MMU Secondary Context Register.
     146 *
     147 * @return Current value of Secondary Context Register.
     148 */
     149static inline __u64 mmu_secondary_context_read(void)
     150{
     151        return asi_u64_read(ASI_DMMU, VA_SECONDARY_CONTEXT_REG);
     152}
     153
     154/** Write MMU Primary Context Register.
     155 *
     156 * @param v New value of Primary Context Register.
     157 */
     158static inline void mmu_secondary_context_write(__u64 v)
     159{
     160        asi_u64_write(ASI_DMMU, VA_PRIMARY_CONTEXT_REG, v);
     161        flush();
     162}
     163
    97164/** Read IMMU TLB Data Access Register.
    98165 *
     
    225292}
    226293
     294/** Read ITLB Synchronous Fault Status Register.
     295 *
     296 * @return Current content of I-SFSR register.
     297 */
     298static inline __u64 itlb_sfsr_read(void)
     299{
     300        return asi_u64_read(ASI_IMMU, VA_IMMU_SFSR);
     301}
     302
     303/** Write ITLB Synchronous Fault Status Register.
     304 *
     305 * @param v New value of I-SFSR register.
     306 */
     307static inline void itlb_sfsr_write(__u64 v)
     308{
     309        asi_u64_write(ASI_IMMU, VA_IMMU_SFSR, v);
     310        flush();
     311}
     312
     313/** Read DTLB Synchronous Fault Status Register.
     314 *
     315 * @return Current content of D-SFSR register.
     316 */
     317static inline __u64 dtlb_sfsr_read(void)
     318{
     319        return asi_u64_read(ASI_DMMU, VA_DMMU_SFSR);
     320}
     321
     322/** Write DTLB Synchronous Fault Status Register.
     323 *
     324 * @param v New value of D-SFSR register.
     325 */
     326static inline void dtlb_sfsr_write(__u64 v)
     327{
     328        asi_u64_write(ASI_DMMU, VA_DMMU_SFSR, v);
     329        flush();
     330}
     331
     332/** Read DTLB Synchronous Fault Address Register.
     333 *
     334 * @return Current content of D-SFAR register.
     335 */
     336static inline __u64 dtlb_sfar_read(void)
     337{
     338        return asi_u64_read(ASI_DMMU, VA_DMMU_SFAR);
     339}
     340
    227341/** Perform IMMU TLB Demap Operation.
    228342 *
Note: See TracChangeset for help on using the changeset viewer.