1 /* 2 * (C) Copyright 2002 3 * Sysgo Real-Time Solutions, GmbH <www.elinos.com> 4 * Marius Groeger <mgroeger@sysgo.de> 5 * 6 * (C) Copyright 2002 7 * Sysgo Real-Time Solutions, GmbH <www.elinos.com> 8 * Alex Zuepke <azu@sysgo.de> 9 * 10 * SPDX-License-Identifier: GPL-2.0+ 11 */ 12 13 #ifndef _U_BOOT_ARM_H_ 14 #define _U_BOOT_ARM_H_ 1 15 16 #ifndef __ASSEMBLY__ 17 18 /* for the following variables, see start.S */ 19 extern ulong IRQ_STACK_START; /* top of IRQ stack */ 20 extern ulong FIQ_STACK_START; /* top of FIQ stack */ 21 extern ulong _datarel_start_ofs; 22 extern ulong _datarelrolocal_start_ofs; 23 extern ulong _datarellocal_start_ofs; 24 extern ulong _datarelro_start_ofs; 25 extern ulong IRQ_STACK_START_IN; /* 8 bytes in IRQ stack */ 26 27 /* cpu/.../cpu.c */ 28 int cpu_init(void); 29 int cleanup_before_linux(void); 30 31 /* Set up ARMv7 MMU, caches and TLBs */ 32 void cpu_init_cp15(void); 33 34 /* cpu/.../arch/cpu.c */ 35 int arch_cpu_init(void); 36 int arch_misc_init(void); 37 int arch_early_init_r(void); 38 39 /* board/.../... */ 40 int board_init(void); 41 void board_quiesce_devices(void); 42 43 /* cpu/.../interrupt.c */ 44 int arch_interrupt_init (void); 45 void reset_timer_masked (void); 46 ulong get_timer_masked (void); 47 void udelay_masked (unsigned long usec); 48 49 /* calls to c from vectors.S */ 50 struct pt_regs; 51 52 void bad_mode(void); 53 void do_undefined_instruction(struct pt_regs *pt_regs); 54 void do_software_interrupt(struct pt_regs *pt_regs); 55 void do_prefetch_abort(struct pt_regs *pt_regs); 56 void do_data_abort(struct pt_regs *pt_regs); 57 void do_not_used(struct pt_regs *pt_regs); 58 #ifdef CONFIG_ARM64 59 void do_fiq(struct pt_regs *pt_regs, unsigned int esr); 60 void do_irq(struct pt_regs *pt_regs, unsigned int esr); 61 #else 62 void do_fiq(struct pt_regs *pt_regs); 63 void do_irq(struct pt_regs *pt_regswq); 64 #endif 65 66 #endif /* __ASSEMBLY__ */ 67 68 #endif /* _U_BOOT_ARM_H_ */ 69