xref: /rk3399_rockchip-uboot/arch/arm/include/asm/global_data.h (revision b87e6f88e9218da3de371bb6cc8a34924153178e)
1819833afSPeter Tyser /*
291a76751SWolfgang Denk  * (C) Copyright 2002-2010
3819833afSPeter Tyser  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
4819833afSPeter Tyser  *
51a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
6819833afSPeter Tyser  */
7819833afSPeter Tyser 
8819833afSPeter Tyser #ifndef	__ASM_GBL_DATA_H
9819833afSPeter Tyser #define __ASM_GBL_DATA_H
105cb48582SSimon Glass 
11fda06812SSRICHARAN R #ifdef CONFIG_OMAP
12fda06812SSRICHARAN R #include <asm/omap_boot.h>
13fda06812SSRICHARAN R #endif
14fda06812SSRICHARAN R 
155cb48582SSimon Glass /* Architecture-specific global data */
165cb48582SSimon Glass struct arch_global_data {
17e9adeca3SSimon Glass #if defined(CONFIG_FSL_ESDHC)
18e9adeca3SSimon Glass 	u32 sdhc_clk;
19e9adeca3SSimon Glass #endif
2093d33204SZhao Qiang 
2193d33204SZhao Qiang #if defined(CONFIG_U_QE)
2293d33204SZhao Qiang 	u32 qe_clk;
2393d33204SZhao Qiang 	u32 brg_clk;
2493d33204SZhao Qiang 	uint mp_alloc_base;
2593d33204SZhao Qiang 	uint mp_alloc_top;
2693d33204SZhao Qiang #endif /* CONFIG_U_QE */
2793d33204SZhao Qiang 
28f47e6ecdSSimon Glass #ifdef CONFIG_AT91FAMILY
29f47e6ecdSSimon Glass 	/* "static data" needed by at91's clock.c */
30f47e6ecdSSimon Glass 	unsigned long	cpu_clk_rate_hz;
31f47e6ecdSSimon Glass 	unsigned long	main_clk_rate_hz;
32f47e6ecdSSimon Glass 	unsigned long	mck_rate_hz;
33f47e6ecdSSimon Glass 	unsigned long	plla_rate_hz;
34f47e6ecdSSimon Glass 	unsigned long	pllb_rate_hz;
35f47e6ecdSSimon Glass 	unsigned long	at91_pllb_usb_init;
36f47e6ecdSSimon Glass #endif
37b339051cSSimon Glass 	/* "static data" needed by most of timer.c on ARM platforms */
38b339051cSSimon Glass 	unsigned long timer_rate_hz;
398ff43b03SSimon Glass 	unsigned long tbu;
4066ee6923SSimon Glass 	unsigned long tbl;
41582601daSSimon Glass 	unsigned long lastinc;
425f70714cSSimon Glass 	unsigned long long timer_reset_value;
4334fd5d25SSimon Glass #if !(defined(CONFIG_SYS_ICACHE_OFF) && defined(CONFIG_SYS_DCACHE_OFF))
4434fd5d25SSimon Glass 	unsigned long tlb_addr;
4534fd5d25SSimon Glass 	unsigned long tlb_size;
4634fd5d25SSimon Glass #endif
47fda06812SSRICHARAN R 
48fda06812SSRICHARAN R #ifdef CONFIG_OMAP
49fda06812SSRICHARAN R 	struct omap_boot_parameters omap_boot_params;
50fda06812SSRICHARAN R #endif
51*b87e6f88SYork Sun #ifdef CONFIG_FSL_LSCH3
52*b87e6f88SYork Sun 	unsigned long mem2_clk;
53*b87e6f88SYork Sun #endif
545cb48582SSimon Glass };
555cb48582SSimon Glass 
56baa1e536SSimon Glass #include <asm-generic/global_data.h>
57819833afSPeter Tyser 
58c65a2abbSJeroen Hofstee #ifdef __clang__
59c65a2abbSJeroen Hofstee 
60c65a2abbSJeroen Hofstee #define DECLARE_GLOBAL_DATA_PTR
61c65a2abbSJeroen Hofstee #define gd	get_gd()
62c65a2abbSJeroen Hofstee 
63c65a2abbSJeroen Hofstee static inline gd_t *get_gd(void)
64c65a2abbSJeroen Hofstee {
65c65a2abbSJeroen Hofstee 	gd_t *gd_ptr;
66c65a2abbSJeroen Hofstee 
67c65a2abbSJeroen Hofstee #ifdef CONFIG_ARM64
68c65a2abbSJeroen Hofstee 	/*
69c65a2abbSJeroen Hofstee 	 * Make will already error that reserving x18 is not supported at the
70c65a2abbSJeroen Hofstee 	 * time of writing, clang: error: unknown argument: '-ffixed-x18'
71c65a2abbSJeroen Hofstee 	 */
72c65a2abbSJeroen Hofstee 	__asm__ volatile("mov %0, x18\n" : "=r" (gd_ptr));
73c65a2abbSJeroen Hofstee #else
74c65a2abbSJeroen Hofstee 	__asm__ volatile("mov %0, r9\n" : "=r" (gd_ptr));
75c65a2abbSJeroen Hofstee #endif
76c65a2abbSJeroen Hofstee 
77c65a2abbSJeroen Hofstee 	return gd_ptr;
78c65a2abbSJeroen Hofstee }
79c65a2abbSJeroen Hofstee 
80c65a2abbSJeroen Hofstee #else
81c65a2abbSJeroen Hofstee 
820ae76531SDavid Feng #ifdef CONFIG_ARM64
830ae76531SDavid Feng #define DECLARE_GLOBAL_DATA_PTR		register volatile gd_t *gd asm ("x18")
840ae76531SDavid Feng #else
85fe1378a9SJeroen Hofstee #define DECLARE_GLOBAL_DATA_PTR		register volatile gd_t *gd asm ("r9")
860ae76531SDavid Feng #endif
87c65a2abbSJeroen Hofstee #endif
88819833afSPeter Tyser 
89819833afSPeter Tyser #endif /* __ASM_GBL_DATA_H */
90