Annotation of src/sys/arch/arm/include/arm32/machdep.h, Revision 1.21.14.3
1.21.14.2 martin 1: /* $NetBSD$ */
1.1 chris 2:
1.21.14.1 christos 3: #ifndef _ARM32_MACHDEP_H_
4: #define _ARM32_MACHDEP_H_
1.1 chris 5:
1.20 skrll 6: /* Define various stack sizes in pages */
1.11 matt 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: #define UND_STACK_SIZE 1
15: #endif
16: #ifndef FIQ_STACK_SIZE
17: #define FIQ_STACK_SIZE 1
18: #endif
19:
20: extern void (*cpu_reset_address)(void);
21: extern paddr_t cpu_reset_address_paddr;
22:
1.19 jmcneill 23: extern void (*cpu_powerdown_address)(void);
24:
1.10 matt 25: extern u_int data_abort_handler_address;
26: extern u_int prefetch_abort_handler_address;
1.14 matt 27: // extern u_int undefined_handler_address;
28: #define undefined_handler_address (curcpu()->ci_undefsave[2])
29:
30: struct bootmem_info {
31: paddr_t bmi_start;
32: paddr_t bmi_kernelstart;
33: paddr_t bmi_kernelend;
34: paddr_t bmi_end;
35: pv_addrqh_t bmi_freechunks;
36: pv_addrqh_t bmi_chunks; /* sorted list of memory to be mapped */
37: pv_addr_t bmi_freeblocks[4];
38: /*
39: * These need to be static for pmap's kernel_pt list.
40: */
41: pv_addr_t bmi_vector_l2pt;
42: pv_addr_t bmi_io_l2pt;
1.17 matt 43: pv_addr_t bmi_l2pts[32]; // for large memory disks.
1.14 matt 44: u_int bmi_freepages;
45: u_int bmi_nfreeblocks;
46: };
47:
48: extern struct bootmem_info bootmem_info;
1.10 matt 49:
50: extern char *booted_kernel;
1.21.14.1 christos 51: extern u_long kern_vtopdiff;
52:
1.1 chris 53: /* misc prototypes used by the many arm machdeps */
1.12 matt 54: void cortex_pmc_ccnt_init(void);
1.21.14.1 christos 55: void cpu_hatch(struct cpu_info *, u_int, void (*)(struct cpu_info *));
1.9 dsl 56: void halt(void);
57: void parse_mi_bootargs(char *);
58: void data_abort_handler(trapframe_t *);
59: void prefetch_abort_handler(trapframe_t *);
60: void undefinedinstruction_bounce(trapframe_t *);
61: void dumpsys(void);
1.1 chris 62:
1.20 skrll 63: /*
1.21 skrll 64: * note that we use void * as all the platforms have different ideas on what
1.2 chris 65: * the structure is
66: */
1.21.14.3! martin 67: vaddr_t initarm(void *);
1.14 matt 68: struct pmap_devmap;
69: struct boot_physmem;
1.21.14.1 christos 70:
1.21.14.2 martin 71: void cpu_startup_hook(void);
72: void cpu_startup_default(void);
73:
1.21.14.1 christos 74: static inline paddr_t
75: aarch32_kern_vtophys(vaddr_t va)
76: {
77: return va - kern_vtopdiff;
78: }
79:
80: static inline vaddr_t
81: aarch32_kern_phystov(paddr_t pa)
82: {
83: return pa + kern_vtopdiff;
84: }
85:
86: #define KERN_VTOPHYS(va) aarch32_kern_vtophys(va)
87: #define KERN_PHYSTOV(pa) aarch32_kern_phystov(pa)
88:
89: void cpu_kernel_vm_init(paddr_t, psize_t);
90:
1.14 matt 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.21.14.1 christos 98: void uartputc(int);
1.2 chris 99:
100: /* from arm/arm32/intr.c */
1.9 dsl 101: void dosoftints(void);
102: void set_spl_masks(void);
1.2 chris 103: #ifdef DIAGNOSTIC
1.9 dsl 104: void dump_spl_masks(void);
1.2 chris 105: #endif
1.1 chris 106: #endif
CVSweb <webmaster@jp.NetBSD.org>