]>
Commit | Line | Data |
---|---|---|
87ecb68b PB |
1 | /* |
2 | * Misc ARM declarations | |
3 | * | |
4 | * Copyright (c) 2006 CodeSourcery. | |
5 | * Written by Paul Brook | |
6 | * | |
8e31bf38 | 7 | * This code is licensed under the LGPL. |
87ecb68b PB |
8 | * |
9 | */ | |
10 | ||
11 | #ifndef ARM_MISC_H | |
12 | #define ARM_MISC_H 1 | |
13 | ||
022c62cb | 14 | #include "exec/memory.h" |
5202ef94 | 15 | #include "hw/irq.h" |
7d6f78cf | 16 | |
085d8134 | 17 | /* The CPU is also modelled as an interrupt controller. */ |
87ecb68b PB |
18 | #define ARM_PIC_CPU_IRQ 0 |
19 | #define ARM_PIC_CPU_FIQ 1 | |
4bd74661 | 20 | qemu_irq *arm_pic_init_cpu(ARMCPU *cpu); |
87ecb68b PB |
21 | |
22 | /* armv7m.c */ | |
7d6f78cf AK |
23 | qemu_irq *armv7m_init(MemoryRegion *address_space_mem, |
24 | int flash_size, int sram_size, | |
87ecb68b PB |
25 | const char *kernel_filename, const char *cpu_model); |
26 | ||
27 | /* arm_boot.c */ | |
f93eb9ff | 28 | struct arm_boot_info { |
de841dea | 29 | uint64_t ram_size; |
f93eb9ff AZ |
30 | const char *kernel_filename; |
31 | const char *kernel_cmdline; | |
32 | const char *initrd_filename; | |
412beee6 | 33 | const char *dtb_filename; |
a8170e5e | 34 | hwaddr loader_start; |
9d5ba9bf ML |
35 | /* multicore boards that use the default secondary core boot functions |
36 | * need to put the address of the secondary boot code, the boot reg, | |
37 | * and the GIC address in the next 3 values, respectively. boards that | |
38 | * have their own boot functions can use these values as they want. | |
39 | */ | |
a8170e5e AK |
40 | hwaddr smp_loader_start; |
41 | hwaddr smp_bootreg_addr; | |
42 | hwaddr gic_cpu_if_addr; | |
f93eb9ff AZ |
43 | int nb_cpus; |
44 | int board_id; | |
462a8bc6 | 45 | int (*atag_board)(const struct arm_boot_info *info, void *p); |
9d5ba9bf ML |
46 | /* multicore boards that use the default secondary core boot functions |
47 | * can ignore these two function calls. If the default functions won't | |
48 | * work, then write_secondary_boot() should write a suitable blob of | |
9b574c29 | 49 | * code mimicking the secondary CPU startup process used by the board's |
9d5ba9bf | 50 | * boot loader/boot ROM code, and secondary_cpu_reset_hook() should |
9b574c29 | 51 | * perform any necessary CPU reset handling and set the PC for the |
9d5ba9bf ML |
52 | * secondary CPUs to point at this boot blob. |
53 | */ | |
9543b0cd | 54 | void (*write_secondary_boot)(ARMCPU *cpu, |
9d5ba9bf | 55 | const struct arm_boot_info *info); |
5d309320 | 56 | void (*secondary_cpu_reset_hook)(ARMCPU *cpu, |
9d5ba9bf | 57 | const struct arm_boot_info *info); |
f2d74978 PB |
58 | /* Used internally by arm_boot.c */ |
59 | int is_linux; | |
fc53b7d4 | 60 | hwaddr initrd_start; |
a8170e5e AK |
61 | hwaddr initrd_size; |
62 | hwaddr entry; | |
f93eb9ff | 63 | }; |
3aaa8dfa | 64 | void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info *info); |
87ecb68b | 65 | |
79383c9c BS |
66 | /* Multiplication factor to convert from system clock ticks to qemu timer |
67 | ticks. */ | |
7ee930d0 | 68 | extern int system_clock_scale; |
87ecb68b PB |
69 | |
70 | #endif /* !ARM_MISC_H */ |