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