1129198Scognet/* $NetBSD: machdep.h,v 1.7 2002/02/21 02:52:21 thorpej Exp $ */
2129198Scognet/* $FreeBSD: stable/11/sys/arm/include/machdep.h 325307 2017-11-02 07:08:13Z mmel $ */
3129198Scognet
4129198Scognet#ifndef _MACHDEP_BOOT_MACHDEP_H_
5129198Scognet#define _MACHDEP_BOOT_MACHDEP_H_
6129198Scognet
7240802Sandrew/* Structs that need to be initialised by initarm */
8295036Smmel#if __ARM_ARCH >= 6
9280712Sianextern vm_offset_t irqstack;
10280712Sianextern vm_offset_t undstack;
11280712Sianextern vm_offset_t abtstack;
12280712Sian#else
13248907Sianstruct pv_addr;
14240802Sandrewextern struct pv_addr irqstack;
15240802Sandrewextern struct pv_addr undstack;
16240802Sandrewextern struct pv_addr abtstack;
17280712Sian#endif
18240802Sandrew
19240802Sandrew/* Define various stack sizes in pages */
20240802Sandrew#define IRQ_STACK_SIZE	1
21240802Sandrew#define ABT_STACK_SIZE	1
22240802Sandrew#define UND_STACK_SIZE	1
23240802Sandrew
24129198Scognet/* misc prototypes used by the many arm machdeps */
25248907Sianstruct trapframe;
26142570Scognetvoid arm_lock_cache_line(vm_offset_t);
27236828Sandrewvoid init_proc0(vm_offset_t kstack);
28177883Simpvoid halt(void);
29276206Sianvoid abort_handler(struct trapframe *, int );
30240802Sandrewvoid set_stackptrs(int cpu);
31248907Sianvoid undefinedinstruction_bounce(struct trapframe *);
32237045Simp
33237045Simp/* Early boot related helper functions */
34237040Simpstruct arm_boot_params;
35237042Simpvm_offset_t default_parse_boot_param(struct arm_boot_params *abp);
36297284Smmelvm_offset_t fake_preload_metadata(struct arm_boot_params *abp,
37297284Smmel    void *dtb_ptr, size_t dtb_size);
38237042Simpvm_offset_t parse_boot_param(struct arm_boot_params *abp);
39317004Smmelvoid arm_parse_fdt_bootargs(void);
40317004Smmelvoid arm_print_kenv(void);
41317004Smmel
42262534Sianvoid arm_generic_initclocks(void);
43325307Smmelint arm_get_vfpstate(struct thread *td, void *args);
44237040Simp
45245079Sgonzo/* Board-specific attributes */
46245079Sgonzovoid board_set_serial(uint64_t);
47245079Sgonzovoid board_set_revision(uint32_t);
48245079Sgonzo
49290273Szbbint arm_predict_branch(void *, u_int, register_t, register_t *,
50290273Szbb    u_int (*)(void*, int), u_int (*)(void*, vm_offset_t, u_int*));
51290273Szbb
52298854Sandrew#ifdef MULTIDELAY
53298854Sandrewtypedef void delay_func(int, void *);
54298854Sandrewvoid arm_set_delay(delay_func *, void *);
55298854Sandrew#endif
56298854Sandrew
57317004Smmel#ifdef EFI
58317004Smmelstruct efi_map_header;
59317004Smmelstruct mem_region;
60317004Smmelvoid arm_add_efi_map_entries(struct efi_map_header *efihdr,
61317004Smmel    struct mem_region *mr, int *mrcnt);
62317004Smmel#endif
63317004Smmel
64129198Scognet#endif /* !_MACHINE_MACHDEP_H_ */
65