xref: /openbmc/u-boot/arch/x86/cpu/qemu/qemu.c (revision 5c564226fc8948e435edea8eb8c5c4afbc5edef1)
1a65b25d1SBin Meng /*
2a65b25d1SBin Meng  * Copyright (C) 2015, Bin Meng <bmeng.cn@gmail.com>
3a65b25d1SBin Meng  *
4a65b25d1SBin Meng  * SPDX-License-Identifier:	GPL-2.0+
5a65b25d1SBin Meng  */
6a65b25d1SBin Meng 
7a65b25d1SBin Meng #include <common.h>
8*5c564226SBin Meng #include <asm/irq.h>
9a65b25d1SBin Meng #include <asm/post.h>
10a65b25d1SBin Meng #include <asm/processor.h>
11a65b25d1SBin Meng 
12a65b25d1SBin Meng int arch_cpu_init(void)
13a65b25d1SBin Meng {
14a65b25d1SBin Meng 	int ret;
15a65b25d1SBin Meng 
16a65b25d1SBin Meng 	post_code(POST_CPU_INIT);
17a65b25d1SBin Meng #ifdef CONFIG_SYS_X86_TSC_TIMER
18a65b25d1SBin Meng 	timer_set_base(rdtsc());
19a65b25d1SBin Meng #endif
20a65b25d1SBin Meng 
21a65b25d1SBin Meng 	ret = x86_cpu_init_f();
22a65b25d1SBin Meng 	if (ret)
23a65b25d1SBin Meng 		return ret;
24a65b25d1SBin Meng 
25a65b25d1SBin Meng 	return 0;
26a65b25d1SBin Meng }
27a65b25d1SBin Meng 
28a65b25d1SBin Meng int print_cpuinfo(void)
29a65b25d1SBin Meng {
30a65b25d1SBin Meng 	post_code(POST_CPU_INFO);
31a65b25d1SBin Meng 	return default_print_cpuinfo();
32a65b25d1SBin Meng }
33a65b25d1SBin Meng 
34a65b25d1SBin Meng void reset_cpu(ulong addr)
35a65b25d1SBin Meng {
36a65b25d1SBin Meng 	/* cold reset */
37a65b25d1SBin Meng 	x86_full_reset();
38a65b25d1SBin Meng }
39*5c564226SBin Meng 
40*5c564226SBin Meng int arch_misc_init(void)
41*5c564226SBin Meng {
42*5c564226SBin Meng 	pirq_init();
43*5c564226SBin Meng 
44*5c564226SBin Meng 	return 0;
45*5c564226SBin Meng }
46