1819833afSPeter Tyser /* 2819833afSPeter Tyser * (C) Copyright 2002 3819833afSPeter Tyser * Sysgo Real-Time Solutions, GmbH <www.elinos.com> 4819833afSPeter Tyser * Marius Groeger <mgroeger@sysgo.de> 5819833afSPeter Tyser * 6819833afSPeter Tyser * (C) Copyright 2002 7819833afSPeter Tyser * Sysgo Real-Time Solutions, GmbH <www.elinos.com> 8819833afSPeter Tyser * Alex Zuepke <azu@sysgo.de> 9819833afSPeter Tyser * 101a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 11819833afSPeter Tyser */ 12819833afSPeter Tyser 13819833afSPeter Tyser #ifndef _U_BOOT_ARM_H_ 14819833afSPeter Tyser #define _U_BOOT_ARM_H_ 1 15819833afSPeter Tyser 16ac6a6bd6SSimon Glass #ifndef __ASSEMBLY__ 17ac6a6bd6SSimon Glass 18819833afSPeter Tyser /* for the following variables, see start.S */ 19819833afSPeter Tyser extern ulong IRQ_STACK_START; /* top of IRQ stack */ 20819833afSPeter Tyser extern ulong FIQ_STACK_START; /* top of FIQ stack */ 2192d5ecbaSAlbert Aribaud extern ulong _datarel_start_ofs; 2292d5ecbaSAlbert Aribaud extern ulong _datarelrolocal_start_ofs; 2392d5ecbaSAlbert Aribaud extern ulong _datarellocal_start_ofs; 2492d5ecbaSAlbert Aribaud extern ulong _datarelro_start_ofs; 25f1d2b313SHeiko Schocher extern ulong IRQ_STACK_START_IN; /* 8 bytes in IRQ stack */ 26819833afSPeter Tyser 27819833afSPeter Tyser /* cpu/.../cpu.c */ 28819833afSPeter Tyser int cpu_init(void); 29819833afSPeter Tyser int cleanup_before_linux(void); 30819833afSPeter Tyser 3180433c9aSSimon Glass /* Set up ARMv7 MMU, caches and TLBs */ 3280433c9aSSimon Glass void cpu_init_cp15(void); 3380433c9aSSimon Glass 34819833afSPeter Tyser /* cpu/.../arch/cpu.c */ 35819833afSPeter Tyser int arch_cpu_init(void); 36819833afSPeter Tyser int arch_misc_init(void); 37d519b4bcSFabio Estevam int arch_early_init_r(void); 38819833afSPeter Tyser 39819833afSPeter Tyser /* board/.../... */ 40819833afSPeter Tyser int board_init(void); 41*a6b5d495SJoseph Chen void board_quiesce_devices(void *images); 42819833afSPeter Tyser 43819833afSPeter Tyser /* cpu/.../interrupt.c */ 44819833afSPeter Tyser int arch_interrupt_init (void); 45819833afSPeter Tyser void reset_timer_masked (void); 46819833afSPeter Tyser ulong get_timer_masked (void); 47819833afSPeter Tyser void udelay_masked (unsigned long usec); 48819833afSPeter Tyser 4949c4bc3aSJeroen Hofstee /* calls to c from vectors.S */ 50c45300b0SSimon Glass struct pt_regs; 51c45300b0SSimon Glass 5249c4bc3aSJeroen Hofstee void bad_mode(void); 5349c4bc3aSJeroen Hofstee void do_undefined_instruction(struct pt_regs *pt_regs); 5449c4bc3aSJeroen Hofstee void do_software_interrupt(struct pt_regs *pt_regs); 5549c4bc3aSJeroen Hofstee void do_prefetch_abort(struct pt_regs *pt_regs); 5649c4bc3aSJeroen Hofstee void do_data_abort(struct pt_regs *pt_regs); 5749c4bc3aSJeroen Hofstee void do_not_used(struct pt_regs *pt_regs); 5849c4bc3aSJeroen Hofstee #ifdef CONFIG_ARM64 5949c4bc3aSJeroen Hofstee void do_fiq(struct pt_regs *pt_regs, unsigned int esr); 6049c4bc3aSJeroen Hofstee void do_irq(struct pt_regs *pt_regs, unsigned int esr); 6149c4bc3aSJeroen Hofstee #else 6249c4bc3aSJeroen Hofstee void do_fiq(struct pt_regs *pt_regs); 6349c4bc3aSJeroen Hofstee void do_irq(struct pt_regs *pt_regswq); 6449c4bc3aSJeroen Hofstee #endif 6549c4bc3aSJeroen Hofstee 66ac6a6bd6SSimon Glass #endif /* __ASSEMBLY__ */ 67ac6a6bd6SSimon Glass 68819833afSPeter Tyser #endif /* _U_BOOT_ARM_H_ */ 69