#include <console/console.h>#include <device/device.h>#include <device/path.h>#include <device/pci_ids.h>#include <cpu/cpu.h>#include <arch/smp/mpspec.h>#include <string.h>#include <arch/cpu.h>#include <cpu/x86/lapic.h>

Go to the source code of this file.
Functions | |
| unsigned char | smp_compute_checksum (void *v, int len) |
| void * | smp_write_floating_table (unsigned long addr) |
| void * | smp_write_floating_table_physaddr (unsigned long addr, unsigned long mpf_physptr) |
| void * | smp_next_mpc_entry (struct mp_config_table *mc) |
| static void | smp_add_mpc_entry (struct mp_config_table *mc, unsigned length) |
| void * | smp_next_mpe_entry (struct mp_config_table *mc) |
| static void | smp_add_mpe_entry (struct mp_config_table *mc, mpe_t mpe) |
| void | smp_write_processor (struct mp_config_table *mc, unsigned char apicid, unsigned char apicver, unsigned char cpuflag, unsigned int cpufeature, unsigned int featureflag) |
| void | smp_write_processors (struct mp_config_table *mc) |
| void | smp_write_bus (struct mp_config_table *mc, unsigned char id, char *bustype) |
| void | smp_write_ioapic (struct mp_config_table *mc, unsigned char id, unsigned char ver, unsigned long apicaddr) |
| void | smp_write_intsrc (struct mp_config_table *mc, unsigned char irqtype, unsigned short irqflag, unsigned char srcbus, unsigned char srcbusirq, unsigned char dstapic, unsigned char dstirq) |
| void | smp_write_intsrc_pci_bridge (struct mp_config_table *mc, unsigned char irqtype, unsigned short irqflag, struct device *dev, unsigned char dstapic, unsigned char *dstirq) |
| void | smp_write_lintsrc (struct mp_config_table *mc, unsigned char irqtype, unsigned short irqflag, unsigned char srcbusid, unsigned char srcbusirq, unsigned char destapic, unsigned char destapiclint) |
| void | smp_write_address_space (struct mp_config_table *mc, unsigned char busid, unsigned char address_type, unsigned int address_base_low, unsigned int address_base_high, unsigned int address_length_low, unsigned int address_length_high) |
| void | smp_write_bus_hierarchy (struct mp_config_table *mc, unsigned char busid, unsigned char bus_info, unsigned char parent_busid) |
| void | smp_write_compatibility_address_space (struct mp_config_table *mc, unsigned char busid, unsigned char address_modifier, unsigned int range_list) |
| static void smp_add_mpc_entry | ( | struct mp_config_table * | mc, | |
| unsigned | length | |||
| ) | [static] |
Definition at line 81 of file mpspec.c.
Referenced by smp_write_bus(), smp_write_intsrc(), smp_write_ioapic(), smp_write_lintsrc(), and smp_write_processor().

| static void smp_add_mpe_entry | ( | struct mp_config_table * | mc, | |
| mpe_t | mpe | |||
| ) | [static] |
Definition at line 93 of file mpspec.c.
Referenced by smp_write_address_space(), smp_write_bus_hierarchy(), and smp_write_compatibility_address_space().

| unsigned char smp_compute_checksum | ( | void * | v, | |
| int | len | |||
| ) |
Definition at line 11 of file mpspec.c.
Referenced by smp_write_config_table(), smp_write_floating_table(), and smp_write_floating_table_physaddr().

| void* smp_next_mpc_entry | ( | struct mp_config_table * | mc | ) |
Definition at line 75 of file mpspec.c.
Referenced by smp_write_bus(), smp_write_config_table(), smp_write_intsrc(), smp_write_ioapic(), smp_write_lintsrc(), and smp_write_processor().

| void* smp_next_mpe_entry | ( | struct mp_config_table * | mc | ) |
Definition at line 87 of file mpspec.c.
Referenced by smp_write_address_space(), smp_write_bus_hierarchy(), smp_write_compatibility_address_space(), and smp_write_config_table().

| void smp_write_address_space | ( | struct mp_config_table * | mc, | |
| unsigned char | busid, | |||
| unsigned char | address_type, | |||
| unsigned int | address_base_low, | |||
| unsigned int | address_base_high, | |||
| unsigned int | address_length_low, | |||
| unsigned int | address_length_high | |||
| ) |
Definition at line 278 of file mpspec.c.
References memset(), smp_add_mpe_entry(), and smp_next_mpe_entry().

| void smp_write_bus | ( | struct mp_config_table * | mc, | |
| unsigned char | id, | |||
| char * | bustype | |||
| ) |
Definition at line 157 of file mpspec.c.
References memcpy(), memset(), smp_add_mpc_entry(), and smp_next_mpc_entry().
Referenced by smp_write_config_table(), and xe7501devkit_register_buses().


| void smp_write_bus_hierarchy | ( | struct mp_config_table * | mc, | |
| unsigned char | busid, | |||
| unsigned char | bus_info, | |||
| unsigned char | parent_busid | |||
| ) |
Definition at line 298 of file mpspec.c.
References memset(), smp_add_mpe_entry(), and smp_next_mpe_entry().

| void smp_write_compatibility_address_space | ( | struct mp_config_table * | mc, | |
| unsigned char | busid, | |||
| unsigned char | address_modifier, | |||
| unsigned int | range_list | |||
| ) |
Definition at line 313 of file mpspec.c.
References memset(), smp_add_mpe_entry(), and smp_next_mpe_entry().

| void* smp_write_floating_table | ( | unsigned long | addr | ) |
Definition at line 24 of file mpspec.c.
References smp_compute_checksum().
Referenced by write_smp_table().


| void* smp_write_floating_table_physaddr | ( | unsigned long | addr, | |
| unsigned long | mpf_physptr | |||
| ) |
Definition at line 51 of file mpspec.c.
References smp_compute_checksum().
Referenced by write_tables().


| void smp_write_intsrc | ( | struct mp_config_table * | mc, | |
| unsigned char | irqtype, | |||
| unsigned short | irqflag, | |||
| unsigned char | srcbus, | |||
| unsigned char | srcbusirq, | |||
| unsigned char | dstapic, | |||
| unsigned char | dstirq | |||
| ) |
Definition at line 184 of file mpspec.c.
References hexdump(), memset(), printk_info, smp_add_mpc_entry(), and smp_next_mpc_entry().
Referenced by smp_write_config_table(), smp_write_intsrc_pci_bridge(), and xe7501devkit_register_interrupts().


| void smp_write_intsrc_pci_bridge | ( | struct mp_config_table * | mc, | |
| unsigned char | irqtype, | |||
| unsigned short | irqflag, | |||
| struct device * | dev, | |||
| unsigned char | dstapic, | |||
| unsigned char * | dstirq | |||
| ) |
Definition at line 207 of file mpspec.c.
References bus::children, device::class, dev_path(), pci_path::devfn, DEVICE_PATH_PCI, device::link, bus::link, device::links, device::path, device_path::pci, PCI_BASE_CLASS_BRIDGE, PCI_CLASS_BRIDGE_CARDBUS, PCI_CLASS_BRIDGE_PCI, PCI_CLASS_BRIDGE_PCMCIA, printk_debug, bus::secondary, device::sibling, smp_write_intsrc(), device_path::type, and device_path::u.
Referenced by smp_write_config_table().


| void smp_write_ioapic | ( | struct mp_config_table * | mc, | |
| unsigned char | id, | |||
| unsigned char | ver, | |||
| unsigned long | apicaddr | |||
| ) |
Definition at line 169 of file mpspec.c.
References memset(), smp_add_mpc_entry(), and smp_next_mpc_entry().
Referenced by smp_write_config_table(), and xe7501devkit_register_ioapics().


| void smp_write_lintsrc | ( | struct mp_config_table * | mc, | |
| unsigned char | irqtype, | |||
| unsigned short | irqflag, | |||
| unsigned char | srcbusid, | |||
| unsigned char | srcbusirq, | |||
| unsigned char | destapic, | |||
| unsigned char | destapiclint | |||
| ) |
Definition at line 260 of file mpspec.c.
References memset(), smp_add_mpc_entry(), and smp_next_mpc_entry().
Referenced by smp_write_config_table().


| void smp_write_processor | ( | struct mp_config_table * | mc, | |
| unsigned char | apicid, | |||
| unsigned char | apicver, | |||
| unsigned char | cpuflag, | |||
| unsigned int | cpufeature, | |||
| unsigned int | featureflag | |||
| ) |
Definition at line 98 of file mpspec.c.
References memset(), smp_add_mpc_entry(), and smp_next_mpc_entry().
Referenced by smp_write_processors(), and smp_write_processors_inorder().


| void smp_write_processors | ( | struct mp_config_table * | mc | ) |
Definition at line 122 of file mpspec.c.
References all_devices, cpuid(), DEVICE_PATH_APIC, DEVICE_PATH_APIC_CLUSTER, cpuid_result::eax, cpuid_result::edx, LAPIC_LVR, device::next, and smp_write_processor().
Referenced by smp_write_config_table().


1.5.5