OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [rc203soc/] [sw/] [uClinux/] [include/] [asm-armnommu/] [proc-fns.h] - Diff between revs 1765 and 1782

Only display areas with differences | Details | Blame | View Log

Rev 1765 Rev 1782
/*
/*
 * linux/include/asm-arm/proc-fns.h
 * linux/include/asm-arm/proc-fns.h
 *
 *
 * Copyright (C) 1997 Russell King
 * Copyright (C) 1997 Russell King
 */
 */
#ifndef __ASM_PROCFNS_H
#ifndef __ASM_PROCFNS_H
#define __ASM_PROCFNS_H
#define __ASM_PROCFNS_H
 
 
#include <asm/page.h>
#include <asm/page.h>
 
 
#ifdef __KERNEL__
#ifdef __KERNEL__
/*
/*
 * Don't change this structure
 * Don't change this structure
 */
 */
extern struct processor {
extern struct processor {
        const char *name;
        const char *name;
        /* MISC
        /* MISC
         *
         *
         * flush caches for task switch
         * flush caches for task switch
         */
         */
        void (*_switch_to)(void *prev, void *next);
        void (*_switch_to)(void *prev, void *next);
        /*
        /*
         * get data abort address/flags
         * get data abort address/flags
         */
         */
        void (*_data_abort)(unsigned long pc);
        void (*_data_abort)(unsigned long pc);
        /*
        /*
         * check for any bugs
         * check for any bugs
         */
         */
        void (*_check_bugs)(void);
        void (*_check_bugs)(void);
        /*
        /*
         * Set up any processor specifics
         * Set up any processor specifics
         */
         */
        void (*_proc_init)(void);
        void (*_proc_init)(void);
        /*
        /*
         * Disable any processor specifics
         * Disable any processor specifics
         */
         */
        void (*_proc_fin)(void);
        void (*_proc_fin)(void);
        /*
        /*
         * Processor architecture specific
         * Processor architecture specific
         */
         */
        union {
        union {
                struct {
                struct {
                        /* CACHE
                        /* CACHE
                         *
                         *
                         * flush all caches
                         * flush all caches
                         */
                         */
                        void (*_flush_cache_all)(void);
                        void (*_flush_cache_all)(void);
                        /*
                        /*
                         * flush a specific page or pages
                         * flush a specific page or pages
                         */
                         */
                        void (*_flush_cache_area)(unsigned long address, unsigned long end, int flags);
                        void (*_flush_cache_area)(unsigned long address, unsigned long end, int flags);
                        /*
                        /*
                         * flush cache entry for an address
                         * flush cache entry for an address
                         */
                         */
                        void (*_flush_cache_entry)(unsigned long address);
                        void (*_flush_cache_entry)(unsigned long address);
                        /*
                        /*
                         * flush a virtual address used for a page table
                         * flush a virtual address used for a page table
                         * note D-cache only!
                         * note D-cache only!
                         */
                         */
                        void (*_flush_cache_pte)(unsigned long address);
                        void (*_flush_cache_pte)(unsigned long address);
                        /*
                        /*
                         * flush a page to RAM
                         * flush a page to RAM
                         */
                         */
                        void (*_flush_ram_page)(unsigned long page);
                        void (*_flush_ram_page)(unsigned long page);
                        /* TLB
                        /* TLB
                         *
                         *
                         * flush all TLBs
                         * flush all TLBs
                         */
                         */
                        void (*_flush_tlb_all)(void);
                        void (*_flush_tlb_all)(void);
                        /*
                        /*
                         * flush a specific TLB
                         * flush a specific TLB
                         */
                         */
                        void (*_flush_tlb_area)(unsigned long address, unsigned long end, int flags);
                        void (*_flush_tlb_area)(unsigned long address, unsigned long end, int flags);
                        /*
                        /*
                         * Set a PMD (handling IMP bit 4)
                         * Set a PMD (handling IMP bit 4)
                         */
                         */
                        void (*_set_pmd)(pmd_t *pmdp, pmd_t pmd);
                        void (*_set_pmd)(pmd_t *pmdp, pmd_t pmd);
                        /*
                        /*
                         * Special stuff for a reset
                         * Special stuff for a reset
                         */
                         */
                        unsigned long (*reset)(void);
                        unsigned long (*reset)(void);
                } armv3v4;
                } armv3v4;
                struct {
                struct {
                        /* MEMC
                        /* MEMC
                         *
                         *
                         * remap memc tables
                         * remap memc tables
                         */
                         */
                        void (*_remap_memc)(void *tsk);
                        void (*_remap_memc)(void *tsk);
                        /*
                        /*
                         * update task's idea of mmap
                         * update task's idea of mmap
                         */
                         */
                        void (*_update_map)(void *tsk);
                        void (*_update_map)(void *tsk);
                        /*
                        /*
                         * update task's idea after abort
                         * update task's idea after abort
                         */
                         */
                        void (*_update_mmu_cache)(void *vma, unsigned long addr, pte_t pte);
                        void (*_update_mmu_cache)(void *vma, unsigned long addr, pte_t pte);
                        /* XCHG
                        /* XCHG
                         */
                         */
                        unsigned long (*_xchg_1)(unsigned long x, volatile void *ptr);
                        unsigned long (*_xchg_1)(unsigned long x, volatile void *ptr);
                        unsigned long (*_xchg_2)(unsigned long x, volatile void *ptr);
                        unsigned long (*_xchg_2)(unsigned long x, volatile void *ptr);
                        unsigned long (*_xchg_4)(unsigned long x, volatile void *ptr);
                        unsigned long (*_xchg_4)(unsigned long x, volatile void *ptr);
                } armv2;
                } armv2;
        } u;
        } u;
} processor;
} processor;
#endif  
#endif  
#endif
#endif
 
 
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.