[BACK]Return to machdep.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / arm / include / arm32

Annotation of src/sys/arch/arm/include/arm32/machdep.h, Revision 1.15

1.15    ! martin      1: /* $NetBSD: machdep.h,v 1.14 2012/08/31 23:59:52 matt Exp $ */
1.1       chris       2:
                      3: #ifndef _ARM32_BOOT_MACHDEP_H_
                      4: #define _ARM32_BOOT_MACHDEP_H_
                      5:
1.11      matt        6: /* Define various stack sizes in pages */
                      7: #ifndef IRQ_STACK_SIZE
                      8: #define IRQ_STACK_SIZE 1
                      9: #endif
                     10: #ifndef ABT_STACK_SIZE
                     11: #define ABT_STACK_SIZE 1
                     12: #endif
                     13: #ifndef UND_STACK_SIZE
                     14: #ifdef IPKDB
                     15: #define UND_STACK_SIZE 2
                     16: #else
                     17: #define UND_STACK_SIZE 1
                     18: #endif
                     19: #endif
                     20: #ifndef FIQ_STACK_SIZE
                     21: #define FIQ_STACK_SIZE 1
                     22: #endif
                     23:
                     24:
                     25: extern void (*cpu_reset_address)(void);
                     26: extern paddr_t cpu_reset_address_paddr;
                     27:
1.10      matt       28: extern u_int data_abort_handler_address;
                     29: extern u_int prefetch_abort_handler_address;
1.14      matt       30: // extern u_int undefined_handler_address;
                     31: #define        undefined_handler_address (curcpu()->ci_undefsave[2])
                     32:
1.15    ! martin     33: /*
        !            34:  * Physical / virtual address structure. In a number of places (particularly
        !            35:  * during bootstrapping) we need to keep track of the physical and virtual
        !            36:  * addresses of various pages
        !            37:  */
        !            38: typedef struct pv_addr {
        !            39:        SLIST_ENTRY(pv_addr) pv_list;
        !            40:        paddr_t pv_pa;
        !            41:        vaddr_t pv_va;
        !            42:        vsize_t pv_size;
        !            43:        uint8_t pv_cache;
        !            44:        uint8_t pv_prot;
        !            45: } pv_addr_t;
        !            46: typedef SLIST_HEAD(, pv_addr) pv_addrqh_t;
        !            47:
1.14      matt       48: struct bootmem_info {
                     49:        paddr_t bmi_start;
                     50:        paddr_t bmi_kernelstart;
                     51:        paddr_t bmi_kernelend;
                     52:        paddr_t bmi_end;
                     53:        pv_addrqh_t bmi_freechunks;
                     54:        pv_addrqh_t bmi_chunks;         /* sorted list of memory to be mapped */
                     55:        pv_addr_t bmi_freeblocks[4];
                     56:        /*
                     57:         * These need to be static for pmap's kernel_pt list.
                     58:         */
                     59:        pv_addr_t bmi_vector_l2pt;
                     60:        pv_addr_t bmi_io_l2pt;
                     61:        pv_addr_t bmi_l2pts[16];
                     62:        u_int bmi_freepages;
                     63:        u_int bmi_nfreeblocks;
                     64: };
                     65:
                     66: extern struct bootmem_info bootmem_info;
1.10      matt       67:
                     68: extern char *booted_kernel;
                     69:
1.14      matt       70: extern volatile uint32_t arm_cpu_hatched;
                     71: extern uint32_t arm_cpu_mbox;
                     72: extern u_int arm_cpu_max;
                     73:
1.1       chris      74: /* misc prototypes used by the many arm machdeps */
1.12      matt       75: void cortex_pmc_ccnt_init(void);
1.14      matt       76: void cpu_hatch(struct cpu_info *, cpuid_t, void (*)(struct cpu_info *));
1.9       dsl        77: void halt(void);
                     78: void parse_mi_bootargs(char *);
                     79: void data_abort_handler(trapframe_t *);
                     80: void prefetch_abort_handler(trapframe_t *);
                     81: void undefinedinstruction_bounce(trapframe_t *);
                     82: void dumpsys(void);
1.1       chris      83:
1.2       chris      84: /*
1.8       christos   85:  * note that we use void *as all the platforms have different ideas on what
1.2       chris      86:  * the structure is
                     87:  */
1.9       dsl        88: u_int initarm(void *);
1.14      matt       89: struct pmap_devmap;
                     90: struct boot_physmem;
                     91: void arm32_bootmem_init(paddr_t memstart, psize_t memsize, paddr_t kernelstart);
                     92: void arm32_kernel_vm_init(vaddr_t kvm_base, vaddr_t vectors,
                     93:        vaddr_t iovbase /* (can be zero) */,
                     94:        const struct pmap_devmap *devmap, bool mapallmem_p);
                     95: vaddr_t initarm_common(vaddr_t kvm_base, vsize_t kvm_size,
                     96:         const struct boot_physmem *bp, size_t nbp);
                     97:
1.2       chris      98:
                     99: /* from arm/arm32/intr.c */
1.9       dsl       100: void dosoftints(void);
                    101: void set_spl_masks(void);
1.2       chris     102: #ifdef DIAGNOSTIC
1.9       dsl       103: void dump_spl_masks(void);
1.2       chris     104: #endif
1.1       chris     105: #endif

CVSweb <webmaster@jp.NetBSD.org>