1129198Scognet/* $NetBSD: machdep.h,v 1.7 2002/02/21 02:52:21 thorpej Exp $ */
2129198Scognet/* $FreeBSD: releng/11.0/sys/arm/include/machdep.h 300694 2016-05-25 19:44:26Z ian $ */
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);
36237044Simpvm_offset_t freebsd_parse_boot_param(struct arm_boot_params *abp);
37237044Simpvm_offset_t linux_parse_boot_param(struct arm_boot_params *abp);
38297284Smmelvm_offset_t fake_preload_metadata(struct arm_boot_params *abp,
39297284Smmel    void *dtb_ptr, size_t dtb_size);
40237042Simpvm_offset_t parse_boot_param(struct arm_boot_params *abp);
41262534Sianvoid arm_generic_initclocks(void);
42237040Simp
43245079Sgonzo/* Board-specific attributes */
44245079Sgonzovoid board_set_serial(uint64_t);
45245079Sgonzovoid board_set_revision(uint32_t);
46245079Sgonzo
47290273Szbbint arm_predict_branch(void *, u_int, register_t, register_t *,
48290273Szbb    u_int (*)(void*, int), u_int (*)(void*, vm_offset_t, u_int*));
49290273Szbb
50298854Sandrew#ifdef MULTIDELAY
51298854Sandrewtypedef void delay_func(int, void *);
52298854Sandrewvoid arm_set_delay(delay_func *, void *);
53298854Sandrew#endif
54298854Sandrew
55129198Scognet#endif /* !_MACHINE_MACHDEP_H_ */
56