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