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