xref: /rk3399_rockchip-uboot/arch/arm/include/asm/u-boot-arm.h (revision f8f8bbc62fc911ca724dd0a6184be5982d300b0e)
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