Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

srmmu.c File Reference

#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/malloc.h>
#include <linux/vmalloc.h>
#include <linux/pagemap.h>
#include <linux/init.h>
#include <linux/blk.h>
#include <asm/page.h>
#include <asm/pgtable.h>
#include <asm/io.h>
#include <asm/kdebug.h>
#include <asm/vaddrs.h>
#include <asm/traps.h>
#include <asm/smp.h>
#include <asm/mbus.h>
#include <asm/cache.h>
#include <asm/oplib.h>
#include <asm/sbus.h>
#include <asm/asi.h>
#include <asm/msi.h>
#include <asm/a.out.h>
#include <asm/mmu_context.h>
#include <asm/io-unit.h>
#include <asm/spinlock.h>
#include <asm/viking.h>
#include <asm/mxcc.h>
#include <asm/ross.h>
#include <asm/tsunami.h>
#include <asm/swift.h>
#include <asm/turbosparc.h>
#include <asm/btfixup.h>

Include dependency graph for srmmu.c:

Go to the source code of this file.

Defines

#define FLUSH_BEGIN(mm)   if((mm)->context != NO_CONTEXT) {
#define FLUSH_END   }
#define ctxd_set(ctxp, pgdp)   BTFIXUP_CALL(ctxd_set)(ctxp,pgdp)
#define pmd_set(pmdp, ptep)   BTFIXUP_CALL(pmd_set)(pmdp,ptep)
#define flush_page_for_dma(page)   BTFIXUP_CALL(flush_page_for_dma)(page)
#define flush_chunk(chunk)   BTFIXUP_CALL(flush_chunk)(chunk)
#define SRMMU_HASHSZ   256
#define srmmu_ahashfn(addr)   ((addr) >> 24)
#define srmmu_set_entry(ptr, newentry)   srmmu_swap((unsigned long *) (ptr), (newentry))
#define PGSKIP_DEBUG(from, to)   do { } while (0)
#define UWINMASK_OFFSET   (const unsigned long)(&(((struct task_struct *)0)->tss.uwinmask))
#define MKTRACE(foo)
#define KERNEL_PTE(page_shifted)   ((page_shifted)|SRMMU_CACHE|SRMMU_PRIV|SRMMU_VALID)
#define SWIFT_MASKID_ADDR   0x10003018
#define PATCH_BRANCH(insn, dest)

Functions

static unsigned long srmmu_v2p (unsigned long vaddr)
static unsigned long srmmu_p2v (unsigned long paddr)
static unsigned long srmmu_c_v2p (unsigned long vaddr)
static unsigned long srmmu_c_p2v (unsigned long paddr)
static unsigned long srmmu_s_v2p (unsigned long vaddr)
static unsigned long srmmu_s_p2v (unsigned long paddr)
static unsigned long srmmu_swap (unsigned long *addr, unsigned long value)
 __initfunc (void srmmu_frob_mem_map(unsigned long start_mem))
static int srmmu_device_memory (unsigned long x)
static unsigned long srmmu_pgd_page (pgd_t pgd)
static unsigned long srmmu_pmd_page (pmd_t pmd)
static unsigned long srmmu_pte_page (pte_t pte)
static unsigned long srmmu_c_pgd_page (pgd_t pgd)
static unsigned long srmmu_c_pmd_page (pmd_t pmd)
static unsigned long srmmu_c_pte_page (pte_t pte)
static unsigned long srmmu_s_pgd_page (pgd_t pgd)
static unsigned long srmmu_s_pmd_page (pmd_t pmd)
static unsigned long srmmu_s_pte_page (pte_t pte)
static int srmmu_pte_none (pte_t pte)
static int srmmu_pte_present (pte_t pte)
static void srmmu_pte_clear (pte_t *ptep)
static int srmmu_pmd_none (pmd_t pmd)
static int srmmu_pmd_bad (pmd_t pmd)
static int srmmu_pmd_present (pmd_t pmd)
static void srmmu_pmd_clear (pmd_t *pmdp)
static int srmmu_pgd_none (pgd_t pgd)
static int srmmu_pgd_bad (pgd_t pgd)
static int srmmu_pgd_present (pgd_t pgd)
static void srmmu_pgd_clear (pgd_t *pgdp)
static int srmmu_pte_write (pte_t pte)
static int srmmu_pte_dirty (pte_t pte)
static int srmmu_pte_young (pte_t pte)
static pte_t srmmu_pte_wrprotect (pte_t pte)
static pte_t srmmu_pte_mkclean (pte_t pte)
static pte_t srmmu_pte_mkold (pte_t pte)
static pte_t srmmu_pte_mkwrite (pte_t pte)
static pte_t srmmu_pte_mkdirty (pte_t pte)
static pte_t srmmu_pte_mkyoung (pte_t pte)
static pte_t srmmu_mk_pte (unsigned long page, pgprot_t pgprot)
static pte_t srmmu_c_mk_pte (unsigned long page, pgprot_t pgprot)
static pte_t srmmu_s_mk_pte (unsigned long page, pgprot_t pgprot)
static pte_t srmmu_mk_pte_phys (unsigned long page, pgprot_t pgprot)
static pte_t srmmu_mk_pte_io (unsigned long page, pgprot_t pgprot, int space)
static void srmmu_ctxd_set (ctxd_t *ctxp, pgd_t *pgdp)
static void srmmu_pgd_set (pgd_t *pgdp, pmd_t *pmdp)
static void srmmu_pmd_set (pmd_t *pmdp, pte_t *ptep)
static void srmmu_c_ctxd_set (ctxd_t *ctxp, pgd_t *pgdp)
static void srmmu_c_pgd_set (pgd_t *pgdp, pmd_t *pmdp)
static void srmmu_c_pmd_set (pmd_t *pmdp, pte_t *ptep)
static void srmmu_s_ctxd_set (ctxd_t *ctxp, pgd_t *pgdp)
static void srmmu_s_pgd_set (pgd_t *pgdp, pmd_t *pmdp)
static void srmmu_s_pmd_set (pmd_t *pmdp, pte_t *ptep)
static pte_t srmmu_pte_modify (pte_t pte, pgprot_t newprot)
static pgd_t * srmmu_pgd_offset (struct mm_struct *mm, unsigned long address)
static pmd_t * srmmu_pmd_offset (pgd_t *dir, unsigned long address)
static pte_t * srmmu_pte_offset (pmd_t *dir, unsigned long address)
static pmd_t * srmmu_c_pmd_offset (pgd_t *dir, unsigned long address)
static pte_t * srmmu_c_pte_offset (pmd_t *dir, unsigned long address)
static pmd_t * srmmu_s_pmd_offset (pgd_t *dir, unsigned long address)
static pte_t * srmmu_s_pte_offset (pmd_t *dir, unsigned long address)
static void srmmu_update_rootmmu_dir (struct task_struct *tsk, pgd_t *pgdp)
static pte_t * srmmu_get_pte_fast (void)
static pte_t * srmmu_get_pte_slow (void)
static pgd_t * srmmu_get_pgd_fast (void)
static pgd_t * srmmu_get_pgd_slow (void)
static void srmmu_free_pte_slow (pte_t *pte)
static void srmmu_free_pgd_slow (pgd_t *pgd)
static void srmmu_pte_free (pte_t *pte)
static pte_t * srmmu_pte_alloc (pmd_t *pmd, unsigned long address)
static void srmmu_pmd_free (pmd_t *pmd)
static pmd_t * srmmu_pmd_alloc (pgd_t *pgd, unsigned long address)
static void srmmu_pgd_free (pgd_t *pgd)
static pgd_t * srmmu_pgd_alloc (void)
static void srmmu_set_pgdir (unsigned long address, pgd_t entry)
static void srmmu_set_pte_cacheable (pte_t *ptep, pte_t pteval)
void swift_flush_chunk (unsigned long chunk)
static void srmmu_set_pte_nocache_swift (pte_t *ptep, pte_t pteval)
static void srmmu_set_pte_nocache_cypress (pte_t *ptep, pte_t pteval)
static void srmmu_set_pte_nocache_viking (pte_t *ptep, pte_t pteval)
static void srmmu_quick_kernel_fault (unsigned long address)
static void alloc_context (struct mm_struct *mm)
static void free_context (int context)
static void srmmu_switch_to_context (struct task_struct *tsk)
static void srmmu_init_new_context (struct mm_struct *mm)
void srmmu_mapioaddr (unsigned long physaddr, unsigned long virt_addr, int bus_type, int rdonly)
void srmmu_unmapioaddr (unsigned long virt_addr)
task_struct * srmmu_alloc_task_struct (void)
static void srmmu_free_task_struct (struct task_struct *tsk)
void tsunami_flush_cache_all (void)
void tsunami_flush_cache_mm (struct mm_struct *mm)
void tsunami_flush_cache_range (struct mm_struct *mm, unsigned long start, unsigned long end)
void tsunami_flush_cache_page (struct vm_area_struct *vma, unsigned long page)
void tsunami_flush_page_to_ram (unsigned long page)
void tsunami_flush_page_for_dma (unsigned long page)
void tsunami_flush_sig_insns (struct mm_struct *mm, unsigned long insn_addr)
void tsunami_flush_chunk (unsigned long chunk)
void tsunami_flush_tlb_all (void)
void tsunami_flush_tlb_mm (struct mm_struct *mm)
void tsunami_flush_tlb_range (struct mm_struct *mm, unsigned long start, unsigned long end)
void tsunami_flush_tlb_page (struct vm_area_struct *vma, unsigned long page)
void tsunami_setup_blockops (void)
void swift_flush_cache_all (void)
void swift_flush_cache_mm (struct mm_struct *mm)
void swift_flush_cache_range (struct mm_struct *mm, unsigned long start, unsigned long end)
void swift_flush_cache_page (struct vm_area_struct *vma, unsigned long page)
void swift_flush_page_to_ram (unsigned long page)
void swift_flush_page_for_dma (unsigned long page)
void swift_flush_sig_insns (struct mm_struct *mm, unsigned long insn_addr)
void swift_flush_tlb_all (void)
void swift_flush_tlb_mm (struct mm_struct *mm)
void swift_flush_tlb_range (struct mm_struct *mm, unsigned long start, unsigned long end)
void swift_flush_tlb_page (struct vm_area_struct *vma, unsigned long page)
static void swift_update_rootmmu_dir (struct task_struct *tsk, pgd_t *pgdp)
static void swift_init_new_context (struct mm_struct *mm)
static void cypress_flush_cache_all (void)
static void cypress_flush_cache_mm (struct mm_struct *mm)
static void cypress_flush_cache_range (struct mm_struct *mm, unsigned long start, unsigned long end)
static void cypress_flush_cache_page (struct vm_area_struct *vma, unsigned long page)
static void cypress_flush_page_to_ram (unsigned long page)
static void cypress_flush_chunk (unsigned long chunk)
static void cypress_flush_page_for_dma (unsigned long page)
static void cypress_flush_sig_insns (struct mm_struct *mm, unsigned long insn_addr)
static void cypress_flush_tlb_all (void)
static void cypress_flush_tlb_mm (struct mm_struct *mm)
static void cypress_flush_tlb_range (struct mm_struct *mm, unsigned long start, unsigned long end)
static void cypress_flush_tlb_page (struct vm_area_struct *vma, unsigned long page)
void viking_flush_cache_all (void)
void viking_flush_cache_mm (struct mm_struct *mm)
void viking_flush_cache_range (struct mm_struct *mm, unsigned long start, unsigned long end)
void viking_flush_cache_page (struct vm_area_struct *vma, unsigned long page)
void viking_flush_page_to_ram (unsigned long page)
void viking_flush_page_for_dma (unsigned long page)
void viking_flush_sig_insns (struct mm_struct *mm, unsigned long addr)
void viking_flush_page (unsigned long page)
void viking_mxcc_flush_page (unsigned long page)
void viking_flush_chunk (unsigned long chunk)
void viking_c_flush_chunk (unsigned long chunk)
void viking_s_flush_chunk (unsigned long chunk)
void viking_mxcc_flush_chunk (unsigned long chunk)
void viking_flush_tlb_all (void)
void viking_flush_tlb_mm (struct mm_struct *mm)
void viking_flush_tlb_range (struct mm_struct *mm, unsigned long start, unsigned long end)
void viking_flush_tlb_page (struct vm_area_struct *vma, unsigned long page)
void sun4dsmp_flush_tlb_all (void)
void sun4dsmp_flush_tlb_mm (struct mm_struct *mm)
void sun4dsmp_flush_tlb_range (struct mm_struct *mm, unsigned long start, unsigned long end)
void sun4dsmp_flush_tlb_page (struct vm_area_struct *vma, unsigned long page)
void hypersparc_flush_cache_all (void)
void hypersparc_flush_cache_mm (struct mm_struct *mm)
void hypersparc_flush_cache_range (struct mm_struct *mm, unsigned long start, unsigned long end)
void hypersparc_flush_cache_page (struct vm_area_struct *vma, unsigned long page)
void hypersparc_flush_page_to_ram (unsigned long page)
void hypersparc_flush_chunk (unsigned long chunk)
void hypersparc_flush_page_for_dma (unsigned long page)
void hypersparc_flush_sig_insns (struct mm_struct *mm, unsigned long insn_addr)
void hypersparc_flush_tlb_all (void)
void hypersparc_flush_tlb_mm (struct mm_struct *mm)
void hypersparc_flush_tlb_range (struct mm_struct *mm, unsigned long start, unsigned long end)
void hypersparc_flush_tlb_page (struct vm_area_struct *vma, unsigned long page)
void hypersparc_setup_blockops (void)
static void srmmu_set_pte_nocache_hyper (pte_t *ptep, pte_t pteval)
static void hypersparc_ctxd_set (ctxd_t *ctxp, pgd_t *pgdp)
static void hypersparc_update_rootmmu_dir (struct task_struct *tsk, pgd_t *pgdp)
static void viking_update_rootmmu_dir (struct task_struct *tsk, pgd_t *pgdp)
static void cypress_update_rootmmu_dir (struct task_struct *tsk, pgd_t *pgdp)
static void hypersparc_switch_to_context (struct task_struct *tsk)
static void hypersparc_init_new_context (struct mm_struct *mm)
static unsigned long srmmu_early_paddr (unsigned long vaddr)
static void srmmu_early_pgd_set (pgd_t *pgdp, pmd_t *pmdp)
static void srmmu_early_pmd_set (pmd_t *pmdp, pte_t *ptep)
static unsigned long srmmu_early_pgd_page (pgd_t pgd)
static unsigned long srmmu_early_pmd_page (pmd_t pmd)
static pmd_t * srmmu_early_pmd_offset (pgd_t *dir, unsigned long address)
static pte_t * srmmu_early_pte_offset (pmd_t *dir, unsigned long address)
static void srmmu_allocate_ptable_skeleton (unsigned long start, unsigned long end)
 __initfunc (void srmmu_inherit_prom_mappings(unsigned long start, unsigned long end))
 __initfunc (void srmmu_end_memory(unsigned long memory_size, unsigned long *end_mem_p))
 __initfunc (static void do_large_mapping(unsigned long vaddr, unsigned long phys_base))
static int find_in_spbanks (unsigned long phys_page)
 __initfunc (static int find_free_spbank(char *taken_vector))
 __initfunc (static unsigned long map_spbank(unsigned long vbase, int sp_entry))
static void memprobe_error (char *msg)
static void map_kernel (void)
unsigned long free_area_init (unsigned long, unsigned long)
unsigned long sparc_context_init (unsigned long, int)
static int srmmu_mmu_info (char *buf)
static void srmmu_update_mmu_cache (struct vm_area_struct *vma, unsigned long address, pte_t pte)
static void srmmu_destroy_context (struct mm_struct *mm)
static void srmmu_vac_update_mmu_cache (struct vm_area_struct *vma, unsigned long address, pte_t pte)
static void hypersparc_destroy_context (struct mm_struct *mm)
 __initfunc (static void srmmu_is_bad(void))
 __initfunc (static void init_cypress_605(unsigned long mrev))
static void turbosparc_flush_cache_all (void)
static void turbosparc_flush_cache_mm (struct mm_struct *mm)
static void turbosparc_flush_cache_range (struct mm_struct *mm, unsigned long start, unsigned long end)
static void turbosparc_flush_cache_page (struct vm_area_struct *vma, unsigned long page)
static void turbosparc_flush_page_to_ram (unsigned long page)
static void turbosparc_flush_sig_insns (struct mm_struct *mm, unsigned long insn_addr)
static void turbosparc_flush_page_for_dma (unsigned long page)
static void turbosparc_flush_chunk (unsigned long chunk)
static void turbosparc_flush_tlb_all (void)
static void turbosparc_flush_tlb_mm (struct mm_struct *mm)
static void turbosparc_flush_tlb_range (struct mm_struct *mm, unsigned long start, unsigned long end)
static void turbosparc_flush_tlb_page (struct vm_area_struct *vma, unsigned long page)
static int srmmu_check_pgt_cache (int low, int high)
 __initfunc (void ld_mmu_srmmu(void))

Variables

enum mbus_module srmmu_modtype
unsigned int hwbug_bitmask
int vac_cache_size
int vac_line_size
int vac_badbits
unsigned long sparc_iobase_vaddr
static int phys_mem_contig
int flush_page_for_dma_global = 1
static struct srmmu_stats module_stats
char * srmmu_name
ctxd_t * srmmu_ctx_table_phys
ctxd_t * srmmu_context_table
static struct srmmu_trans srmmu_map [SPARC_PHYS_BANKS]
unsigned long srmmu_v2p_hash [SRMMU_HASHSZ]
static unsigned long srmmu_p2v_hash [SRMMU_HASHSZ]
int viking_mxcc_present = 0
static unsigned long mempool
static unsigned long kbpage
static int lots_of_ram __initdata = 0
int physmem_mapped_contig
int linux_num_cpus
void(* poke_srmmu )(void)
unsigned long spwin_mmu_patchme
unsigned long fwin_mmu_patchme
unsigned long tsetup_mmu_patchme
unsigned long rtrap_mmu_patchme
unsigned long spwin_srmmu_stackchk
unsigned long srmmu_fwin_stackchk
unsigned long tsetup_srmmu_stackchk
unsigned long srmmu_rett_stackchk
unsigned long srmmu_fault


Define Documentation

#define ctxd_set ctxp,
pgdp   )     BTFIXUP_CALL(ctxd_set)(ctxp,pgdp)
 

Definition at line 72 of file srmmu.c.

Referenced by __initfunc(), cypress_update_rootmmu_dir(), hypersparc_update_rootmmu_dir(), map_kernel(), srmmu_destroy_context(), srmmu_init_new_context(), srmmu_switch_to_context(), srmmu_update_rootmmu_dir(), swift_update_rootmmu_dir(), and viking_update_rootmmu_dir().

#define FLUSH_BEGIN mm   )     if((mm)->context != NO_CONTEXT) {
 

Definition at line 62 of file srmmu.c.

Referenced by cypress_flush_cache_mm(), cypress_flush_cache_page(), cypress_flush_cache_range(), cypress_flush_tlb_mm(), cypress_flush_tlb_page(), cypress_flush_tlb_range(), turbosparc_flush_cache_mm(), turbosparc_flush_cache_page(), turbosparc_flush_cache_range(), turbosparc_flush_tlb_mm(), turbosparc_flush_tlb_page(), and turbosparc_flush_tlb_range().

#define flush_chunk chunk   )     BTFIXUP_CALL(flush_chunk)(chunk)
 

Definition at line 80 of file srmmu.c.

Referenced by map_kernel(), srmmu_get_pgd_slow(), srmmu_get_pte_slow(), srmmu_set_pgdir(), and viking_update_rootmmu_dir().

#define FLUSH_END   }
 

Definition at line 63 of file srmmu.c.

Referenced by cypress_flush_cache_mm(), cypress_flush_cache_page(), cypress_flush_cache_range(), cypress_flush_tlb_mm(), cypress_flush_tlb_page(), cypress_flush_tlb_range(), turbosparc_flush_cache_mm(), turbosparc_flush_cache_page(), turbosparc_flush_cache_range(), turbosparc_flush_tlb_mm(), turbosparc_flush_tlb_page(), and turbosparc_flush_tlb_range().

#define flush_page_for_dma page   )     BTFIXUP_CALL(flush_page_for_dma)(page)
 

Definition at line 78 of file srmmu.c.

#define KERNEL_PTE page_shifted   )     ((page_shifted)|SRMMU_CACHE|SRMMU_PRIV|SRMMU_VALID)
 

Definition at line 1601 of file srmmu.c.

Referenced by __initfunc().

#define MKTRACE foo   ) 
 

Definition at line 1535 of file srmmu.c.

Referenced by __initfunc(), and map_kernel().

#define PATCH_BRANCH insn,
dest   ) 
 

Value:

do { \
                iaddr = &(insn); \
                daddr = &(dest); \
                *iaddr = SPARC_BRANCH((unsigned long) daddr, (unsigned long) iaddr); \
        } while(0);

Definition at line 2919 of file srmmu.c.

#define PGSKIP_DEBUG from,
to   )     do { } while (0)
 

Definition at line 206 of file srmmu.c.

Referenced by __initfunc().

#define pmd_set pmdp,
ptep   )     BTFIXUP_CALL(pmd_set)(pmdp,ptep)
 

Definition at line 73 of file srmmu.c.

Referenced by __bad_pte(), __initfunc(), callback_init(), get_pte_slow(), inherit_prom_mappings(), map_kernel(), pte_alloc(), and srmmu_pte_alloc().

#define srmmu_ahashfn addr   )     ((addr) >> 24)
 

Definition at line 114 of file srmmu.c.

Referenced by map_kernel(), srmmu_p2v(), and srmmu_v2p().

#define SRMMU_HASHSZ   256
 

Definition at line 108 of file srmmu.c.

Referenced by map_kernel().

#define srmmu_set_entry ptr,
newentry   )     srmmu_swap((unsigned long *) (ptr), (newentry))
 

Definition at line 201 of file srmmu.c.

Referenced by hypersparc_ctxd_set(), hypersparc_destroy_context(), hypersparc_init_new_context(), hypersparc_switch_to_context(), srmmu_set_pte_cacheable(), srmmu_set_pte_nocache_cypress(), srmmu_set_pte_nocache_hyper(), srmmu_set_pte_nocache_swift(), srmmu_set_pte_nocache_viking(), and swift_init_new_context().

#define SWIFT_MASKID_ADDR   0x10003018
 

Definition at line 2357 of file srmmu.c.

#define UWINMASK_OFFSET   (const unsigned long)(&(((struct task_struct *)0)->tss.uwinmask))
 

Definition at line 902 of file srmmu.c.


Function Documentation

__initfunc void   ld_mmu_srmmu(void)  ) 
 

Definition at line 2948 of file srmmu.c.

References ___xchg32_sun4md, alloc_task_struct, BTFIXUPCALL_NOP, BTFIXUPCALL_NORM, BTFIXUPCALL_ORINT, BTFIXUPCALL_RETINT, BTFIXUPCALL_SWAPG1G2, BTFIXUPCALL_SWAPO0G0, BTFIXUPCALL_SWAPO0O1, BTFIXUPCOPY_CALL, BTFIXUPSET_CALL, BTFIXUPSET_HALF, BTFIXUPSET_INT, BTFIXUPSET_SETHI, BTFIXUPSET_SIMM13, ctxd_set, destroy_context, do_check_pgt_cache, flush_cache_all, flush_cache_mm, flush_cache_page, flush_cache_range, flush_page_for_dma, flush_page_to_ram, flush_sig_insns, flush_tlb_all, flush_tlb_mm, flush_tlb_page, flush_tlb_range, free_pgd_slow, free_pte_slow, free_task_struct, get_pgd_fast, get_pte_fast, init_new_context, local_flush_tlb_all(), local_flush_tlb_mm(), local_flush_tlb_page(), local_flush_tlb_range(), mk_pte, mk_pte_io, mk_pte_phys, mmu_info, pg_iobits, pgd_alloc, pgd_bad, pgd_clear, pgd_free, pgd_none, pgd_offset, pgd_page, pgd_present, pgd_set, pmd_alloc, pmd_alloc_kernel, pmd_bad, pmd_clear, pmd_free, pmd_free_kernel, pmd_offset, pmd_page, pmd_present, pmd_set, pte_alloc, pte_alloc_kernel, pte_clear, pte_free, pte_free_kernel, pte_mkdirty, pte_mkwrite, pte_mkyoung, pte_offset, pte_page, pte_present, quick_kernel_fault, set_pgdir, set_pte, smp_flush_cache_all(), smp_flush_cache_mm(), smp_flush_cache_page(), smp_flush_cache_range(), smp_flush_page_to_ram(), smp_flush_sig_insns(), smp_flush_tlb_all(), smp_flush_tlb_mm(), smp_flush_tlb_page(), smp_flush_tlb_range(), sparc_cpu_model, srmmu_alloc_task_struct(), srmmu_check_pgt_cache(), SRMMU_CHG_MASK, srmmu_ctxd_set(), srmmu_destroy_context(), SRMMU_DIRTY, srmmu_free_pgd_slow(), srmmu_free_pte_slow(), srmmu_free_task_struct(), srmmu_get_pgd_fast(), srmmu_get_pte_fast(), srmmu_init_new_context(), srmmu_mk_pte(), srmmu_mk_pte_io(), srmmu_mk_pte_phys(), srmmu_mmu_info(), srmmu_p2v(), SRMMU_PAGE_COPY, SRMMU_PAGE_KERNEL, SRMMU_PAGE_NONE, SRMMU_PAGE_RDONLY, SRMMU_PAGE_SHARED, srmmu_pgd_alloc(), srmmu_pgd_bad(), srmmu_pgd_clear(), srmmu_pgd_free(), srmmu_pgd_none(), srmmu_pgd_offset(), srmmu_pgd_page(), srmmu_pgd_present(), srmmu_pgd_set(), SRMMU_PGDIR_MASK, SRMMU_PGDIR_SHIFT, SRMMU_PGDIR_SIZE, srmmu_pmd_alloc(), srmmu_pmd_bad(), srmmu_pmd_clear(), srmmu_pmd_free(), SRMMU_PMD_MASK, srmmu_pmd_offset(), srmmu_pmd_page(), srmmu_pmd_present(), srmmu_pmd_set(), SRMMU_PMD_SHIFT, SRMMU_PMD_SIZE, srmmu_pte_alloc(), srmmu_pte_clear(), srmmu_pte_free(), srmmu_pte_mkdirty(), srmmu_pte_mkwrite(), srmmu_pte_mkyoung(), srmmu_pte_offset(), srmmu_pte_page(), srmmu_pte_present(), SRMMU_PTRS_PER_PGD, SRMMU_PTRS_PER_PMD, SRMMU_PTRS_PER_PTE, srmmu_quick_kernel_fault(), SRMMU_REF, srmmu_set_pgdir(), srmmu_set_pte_cacheable(), srmmu_switch_to_context(), srmmu_update_mmu_cache(), srmmu_update_rootmmu_dir(), srmmu_v2p(), SRMMU_VALID, SRMMU_WRITE, sun4d, switch_to_context, and update_mmu_cache.

Here is the call graph for this function:

__initfunc static void   init_cypress_605(unsigned long mrev)  ) 
 

Definition at line 2327 of file srmmu.c.

References Cypress, Cypress_vD, Cypress_vE, HWBUG_ASIFLUSH_BROKEN, hwbug_bitmask, HWBUG_COPYBACK_BROKEN, srmmu_modtype, and srmmu_name.

__initfunc static void   srmmu_is_bad(void)  ) 
 

Definition at line 2131 of file srmmu.c.

References prom_halt(), and prom_printf.

Here is the call graph for this function:

__initfunc static unsigned long   map_spbank(unsigned long vbase, int sp_entry)  ) 
 

Definition at line 1649 of file srmmu.c.

References base_addr, MKTRACE, srmmu_trans::pbase, size, srmmu_trans::size, sp_banks, srmmu_map, SRMMU_PGDIR_ALIGN, SRMMU_PGDIR_MASK, SRMMU_PGDIR_SIZE, and srmmu_trans::vbase.

__initfunc static int   find_free_spbank(char *taken_vector)  ) 
 

Definition at line 1635 of file srmmu.c.

References entry, and sp_banks.

__initfunc static void   do_large_mapping(unsigned long vaddr, unsigned long phys_base)  ) 
 

Definition at line 1604 of file srmmu.c.

References init_task, KERNEL_PTE, MKTRACE, and srmmu_pgd_offset().

Here is the call graph for this function:

__initfunc void   srmmu_end_memory(unsigned long memory_size, unsigned long *end_mem_p)  ) 
 

Definition at line 1542 of file srmmu.c.

References base_addr, end_of_phys_memory, first, i, KERNBASE, last, PAGE_SIZE, sp_banks, srmmu_hwprobe(), SRMMU_PGDIR_ALIGN, SRMMU_PGDIR_MASK, SRMMU_PGDIR_SIZE, SRMMU_PTE_PMASK, and sum.

Here is the call graph for this function:

__initfunc void   srmmu_inherit_prom_mappings(unsigned long start, unsigned long end)  ) 
 

Definition at line 1474 of file srmmu.c.

References init_task, KADB_DEBUGGER_BEGVM, PAGE_SIZE, sparc_init_alloc(), srmmu_early_pgd_set(), srmmu_early_pmd_offset(), srmmu_early_pmd_set(), srmmu_early_pte_offset(), srmmu_hwprobe(), srmmu_pgd_none(), srmmu_pgd_offset(), SRMMU_PGDIR_MASK, SRMMU_PGDIR_SIZE, SRMMU_PMD_MASK, srmmu_pmd_none(), SRMMU_PMD_SIZE, SRMMU_PMD_TABLE_SIZE, and SRMMU_PTE_TABLE_SIZE.

Here is the call graph for this function:

__initfunc void   srmmu_frob_mem_map(unsigned long start_mem)  ) 
 

Definition at line 209 of file srmmu.c.

References addr, i, KERNBASE, MAP_NR, max_mapnr, mem_map, PAGE_ALIGN, PAGE_OFFSET, PAGE_SIZE, pg0, pg1, pg2, pg3, PGSKIP_DEBUG, set_bit, srmmu_trans::size, sparc_valid_addr_bitmap, srmmu_map, and srmmu_trans::vbase.

static void alloc_context struct mm_struct *  mm  )  [inline, static]
 

Definition at line 797 of file srmmu.c.

References add_to_used_ctxlist, ctx_free, ctx_list::ctx_mm, ctx_list::ctx_number, ctx_used, current, flush_cache_mm, flush_tlb_mm, ctx_list::next, NO_CONTEXT, panic(), and remove_from_ctx_list().

Here is the call graph for this function:

static void cypress_flush_cache_all void   )  [static]
 

Defi