OSDev Wiki
Advertisement

Общие сведения[]

Этот регистр определяет текущий выполняющийся процесс. В зависимости от поля кода команды opcode2 в нём могут быть сохранены два разных значения: либо идентификатор процесса для механизма быстрого переключения контекста (FCSE PID, opcode2 = 0), либо идентификатор контекста (ContextID, opcpde2=1); последний поддерживается только с версии ARMv6. Изменение ContextID должно выполняться только кодом, выполняющимся в глобальном контексте, а не контексте приложения.

После сброса значение FCSE PID равно нулю, а значение ContextID является неопределённым.

FCSE PID[]

Регистр 13 сопроцессора CP15 (FCSE PID, ARM)

Формат идентификатора процесса

Использование идентификатора процесса описано в разделе Механизм быстрого переключения контекста. В версии ARMv6 этот механизм считается устаревшим и поддерживается для совместимости.

ContextID[]

Регистр 13 сопроцессора CP15 (Context ID, ARM)

Формат идентификатора контекста

Поле ASID содержит идентификатор адресного пространства, используемый устройством управления памяти при преобразовании адресов для поиска необходимой информации в TLB и таблицах переадресации. Перед изменением значения этого поля системное ПО должно использовать барьер синхронизации данных.

Поле PROCID самим процессором не используется. Эти разряды могут использоваться операционной системой по своему усмотрению (например, хранить указатель на блок управления процессом).

Содержимое этого регистра целиком используется макроячейкой встроенной трассировки (ETM) и отладочной логикой. Оно определяет, какое именно адресное пространство используется в данный момент, и применяется, например, для реализации точек останова в определённых процессах.

Advertisement