Допустимые и недействительные окна в SPARC V8
Каким критериям должно соответствовать окно регистра, чтобы считаться действительным или недействительным?
Насколько я понимаю, если окно содержит информацию относительно некоторой функции, скажем, в цепочке функций, то оно содержит достоверную информацию. Если выходные регистры окна перекрывают содержимое (в регистрах) действительного окна, то оно считается недействительным (или если ОС зарезервировала это окно как недопустимое для обработки прерываний).
Однако, на мой взгляд, это не очень подробно объясняется руководством SPARC V8 или System V ABI для SPARC.
Итак, еще раз, мой вопрос: когда окно считается действительным или содержит действительную информацию, а когда оно считается недействительным?
Спасибо
1 ответ
Регистр WIM (Window Invalid Mask) содержит информацию о недопустимых и действительных регистрах, а CWP (Current Window Pointer) содержит текущее используемое окно регистра. Для каждого регистра содержится информация о достоверности.
Если для WIM установлено значение 1, окно считается недействительным и вызывает прерывание при изменении CWP во время операции SAVE или RETSTORE или при выполнении прерывания.
Я нашел это в Руководстве по архитектуре SPARC v8 на стр. 27 и с. 30