Операционная система ЗОСРВ «Нейтрино» > Руководство разработчика > Программные интерфейсы общего назначения > Системные библиотеки > Системные библиотеки > Системная библиотека > C > struct cpuinfo_entry



struct cpuinfo_entry

Фрагмент системной страницы, характеризующий сведения об одиночном процессоре

Прототип:

#include <sys/syspage.h>
struct cpuinfo_entry {
uint32_t cpu;
uint32_t speed;
uint32_t flags;
uint32_t spare[4];
uint16_t name;
uint8_t ins_cache;
uint8_t data_cache;
};

Описание:

Структура содержит информацию системной страницы, характеризующую сведения об одиночном процессоре и включает следующие поля:

cpu
Число, которое соответствует типу процессора и зависит от его архитектуры. Для процессоров семейства x86 оно совпадает с номером микросхемы (например, 486 или 586), а для MIPS и PowerPC заполняется содержимым регистров версии.
speed
Содержит скорость процессора в мегагерцах. Например, для процессора MIPS R4000 с частотой 300 МГц значение этого параметра равно 300.
flags
Поле содержит битовую карту функций микросхемы процессора. Префикс именованной константы указывает, к какому семейству процессоров она применяется (например, константа с префиксом PPC_ применяется к процессорам PowerPC). Если префикс отсутствует (указан префикс CPU_), константа применима ко всем процессорам. Доступны следующие константы:
CPU_FLAG_FPU
Имеется блок вычислений с плавающей запятой.
CPU_FLAG_MMU
Включенный блок управления памятью (т.е. ЦП работает в виртуальном режиме адресации).
X86_CPU_CPUID
Поддержка инструкции CPUID.
X86_CPU_RDTSC
Поддержка инструкции RDTSC.
X86_CPU_INVLPG
Поддержка инструкции INVLPG.
X86_CPU_WP
Наличие бита WP в регистрe CR0.
X86_CPU_BSWAP
Поддержка инструкции BSWAP.
X86_CPU_MMX
Поддержка инструкций MMX.
X86_CPU_CMOV
Поддержка инструкций CMOVxx.
X86_CPU_PSE
Поддержка расширенного размера страниц памяти.
X86_CPU_PGE
Поддержка глобальных привязок буфера быстрого преобразования адресов (TLB global mappings).
X86_CPU_MTRR
Поддержка регистров определения типов памяти (Memory Type Range Register, MTRR).
X86_CPU_SEP
Поддержка инструкций SYSENTER/SYSEXIT.
X86_CPU_SIMD
Поддержка инструкций SIMD.
X86_CPU_FXSR
Поддержка инструкций FXSAVE/FXRSTOR.
X86_CPU_PAE
Поддержка расширенной адресации.
X86_CPU_NX
Поддержка NX PTE бита.
X86_CPU_SSE2
Поддержка инструкций SSE2.
PPC_CPU_EAR
Поддержка регистра внешнего адреса (External Address Register, EAR).
PPC_CPU_HW_HT
CPU использует аппаратную хеш-таблицу.
PPC_CPU_HW_POW
Поддержка управления питанием.
PPC_CPU_FPREGS
Поддержка регистров FPU (вычисления с плавающей точкой).
PPC_CPU_SW_HT
CPU использует программную хеш-таблицу.
PPC_CPU_ALTIVEC
Поддержка инструкций AltiVec SIMD (аналог SSE и SSE2).
PPC_CPU_XAEN
Поддержка расширенной адресации.
PPC_CPU_SW_TLBSYNC
Синхронизация буферов быстрого преобразования адресов (TLB sync).
PPC_CPU_TLB_SHADOW
Имется shadow-регистры в обработчике буферов быстрого преобразования адресов (TLB handler).
PPC_CPU_DCBZ_NONCOHERENT
Инструкция DCBZ (Data Cache Block set to Zero) имеет проблемы при работе с несколькими CPU.
PPC_CPU_SPE
Поддержка инструкций SPE (Signal Processing Engine).
PPC_CPU_NO_MFTB
Отсутствие поддержки MFTB[U].
PPC_CPU_EXTRA_BAT
Поддержка регистров BAT.
PPC_CPU_STWCX_BUG
Требуется применение errata для обхода (workaround) аппаратных проблем с непарной инструкцией "stwcx." при переключении контекстов ядром.
PPC_CPU_XASPACE
Поддержка инструкций Power ISA 2.06 External Process ID Registers, с помощью которых ядро оптимизирует передачу сообщений между различными адресными пространствами. Флаг установлен для процессора Freescale e500mc, поскольку в настоящее время другие процессоры не поддерживают эту функцию. Его установка для них приведёт к непредсказуемым негативным результатам.
MIPS_CPU_FLAG_PFNTOPSHIFT_MASK
Используется для создания записей в буфере быстрого преобразования адресов (TLB).
MIPS_CPU_FLAG_MAX_PGSIZE_MASK
Маска максимального размера страниц памяти.
MIPS_CPU_FLAGS_MAX_PGSIZE_SHIFT
Сдвиг для маски максимального размера страниц памяти.
MIPS_CPU_FLAG_L2_PAGE_CACHE_OPS
Поддержка кеша 2-го уровня.
MIPS_CPU_FLAG_64BIT
Поддержка 64-разрядных регистров.
MIPS_CPU_FLAG_128BIT
Поддержка 128-разрядных регистров.
MIPS_CPU_FLAG_SUPERVISOR
Поддержка режима супевизора.
MIPS_CPU_FLAG_NO_WIRED
Отсутствие регистра Wired.
MIPS_CPU_FLAG_NO_COUNT
Отсутствие регистра Count.
MIPS_CPU_FLAG_EIC
CPU поддерживает и сконфигурирован в режиме EIC.
ARM_CPU_FLAG_XSCALE_CP0
Поддержка сопроцессора Xscale CP0 MAC.
ARM_CPU_FLAG_V6
AARCH32_CPU_FLAG_V6
Процессорная архитектура соответствует ARMv6 (в противном случае это ARMv7, должен быть установлен флаг ARM_CPU_FLAG_V7).
ARM_CPU_FLAG_V6_ASID
Поддержка поля ARMv6 MMU ASID (Address Space IDentifier) для управления адресными пространствами процессов.
ARM_CPU_FLAG_SMP
AARCH32_CPU_FLAG_SMP
AARCH64_CPU_FLAG_SMP
Поддержка мультипроцессорности.
ARM_CPU_FLAG_V7_MP
AARCH32_CPU_FLAG_V7_MP
Поддержка мультипроцессорных расширений архитектуры ARMv7.
ARM_CPU_FLAG_V7
AARCH32_CPU_FLAG_V7
Процессорная архитектура соответствует ARMv7 (в противном случае это ARMv6, должен быть установлен флаг ARM_CPU_FLAG_V6).
ARM_CPU_FLAG_NEON
AARCH32_CPU_FLAG_NEON
AARCH64_CPU_FLAG_SIMD
Поддержка SIMD-сопроцессора NEON.
ARM_CPU_FLAG_WMMX2
Поддержка SIMD-сопроцессора iWMMX2.
ARM_CPU_FLAG_V7_MP_ERRATA
Требуется обход (workaround) проблем с SMP TLB.
ARM_CPU_FLAG_CC_INCR_BIT_32
AARCH32_CPU_FLAG_CC_INCR_32
AARCH64_CPU_FLAG_CC_INCR_32
Счетчик инструкций процессора 32-х разрядный.
AARCH32_CPU_FLAG_IDIV
Поддержка инструкций UDIV и SDIV.
AARCH32_CPU_FLAG_VFP_D32
Поддержка сопроцессором VFP (Vector Floating-Point) 32 double-регистров.
AARCH64_CPU_FLAG_S32G_TLB_ERRATA
При S32G va > 2TB необходимо использование регистра tlbi vmalle1is.
AARCH64_CPU_FLAG_IMX8QM_TLB_ERRATA
Необходимо применение TLD errata для i.MX8 (Board Rev < 2.0(B0)).
AARCH64_CPU_SPECTRE_V2_FIX
Необходимо применение workaround для уязвимости Spectre.
AARCH64_CPU_SPECTRE_V2_MMU
Необходимо применение workaround на уровне MMU для уязвимости Spectre.
AARCH64_CPU_ACTLR
Поддержка ACTLR (Auxiliary Control Register).
AARCH64_CPU_FLAG_LSE
Поддержка расширений LSE (Large System Extensions).
AARCH64_CPU_FLAG_VHE
Поддержка расширений VHE (Virtualization Host Extensions).
E2K_CPU_CPUID
Поддержка инструкции CPUID.
E2K_CPU_4MB_PAGES
Поддержка страниц памяти размером 4Mb.
E2K_CPU_QUADRO_STRD_HWBUG
Применяется обход аппаратной проблемы "strd,5 (fmt==5) loses tags".
E2K_CPU_MC_SOFTRESET_HWBUG
Применяется обход проблемы контроллера памяти при программном сбросе.
E2K_CPU_2MB_PAGES
Поддержка страниц памяти размером 2Mb.
E2K_CPU_MP
SMP режим требует дополнительного сброса ICACHE.
E2K_CPU_MMU_PT_V6
Поддержка нового формата таблицы страниц MMU (V6 page table format).
name
Содержит индекс элемента strings системной страницы. Строка символов, которая соответствует указанному индексу, является именем системы в формате ASCII с нулевым символом в конце (например, R4000 для процессора MIPS R4000).
ins_cache
Содержит индекс в массиве cacheattr системной страницы. Этот индекс указывает на первое определение в списке для кеша инструкций.
data_cache
Содержит индекс в массиве cacheattr системной страницы. Этот индекс указывает на первое определение в списке для кеша данных.

Классификация:

ЗОСРВ «Нейтрино»

Тематические ссылки:

struct syspage_entry

Руководство по разработке модуля startup




Предыдущий раздел: Описание API системной библиотеки