Купил себе книжку "BIOS - дизассемблирование, модификация, программирование", и попробовал "отдизасмить" именно тот BIOS который там приведен (FoxConn 955X7AA-8EKRS2). В общем-то все идет более-менее гладко, прошел программирование микрокода, а дальше пошли вопросы. Первый - в CMOS 128 бит (вообще 256, но старшие включаются ПОСЛЕ этого кода, записью в регистры PCI и их пока "как бы" нет) - а этот код пишет в регистр C1. Как это? Или старший бит не имеет значения? Тогда что это за байт 41h - такого нет в спецификации? Код (Text): 4580 B0C1 MOV AL, C1 4582 E670 OUT 70, AL 4584 E6EB OUT EB, AL 4586 E471 IN AL, 71 4588 E6EB OUT EB, AL 458A 24F0 AND AL, F0 458C 3C50 CMP AL, 50 458E C3 RET И вот такая работа с MSR - тоже нигде не описанными Код (Text): E958 8BF8 MOV DI, AX E95A 66C1E710 SHL EDI, 10 E95E 66B82C000000 MOV ECX, 0000002C E964 0F32 RDMSR ;MSR_FREQUENCY_ID??? E966 660FBAE015 BT EAX, 15 E96B 7209 JB E976 E96D 660FBAE014 BT EAX, 14 E972 0F820801 JB EA7E E976 66B998010000 MOV ECX, 00000198 E97C 0F32 RDMSR ;IA32_PERF_STATUS E97E 8ADA MOV BL, DL E980 BC86E9 MOV SP, E986 E983 E90A5C JMP 4590 ;--> на включение верхних 128 байтов CMOS Что сей кусок кода делает для меня загадка.
Во-первых. не бит, а байт. Да, старший бит не влияет на выбираемый индекс ячейки (см. в соседней ветке, для чего он используется). Из 128 ячеек относительно стандартизировано назначение примерно у четверти. Они описаны, но только в старых даташитах. На то регистры и модельно-специфические, чтобы "исчезать" или менять свое назначение в более новых процессорах.
1. Да, байт, а не бит. Написалось автоматом. 2. Можно адрес соседней ветки? 3. То есть, я так понимаю, C1-->41 - не стандартизирована, и спецификаций на эту тему нет? 4. Сколько не искал спецификации Intel на старые процессоры - все ведут к http://www.intel.com/Assets/PDF/manual/253669.pdf . Там есть MSR'ы в конце, но куча таблиц, и я там запутался, какую смотреть для моего i955x чипсета?
Нашел в данном документе MSR 198H для Core 2 Duo - MSR_PERF_STATUS - но биты с 32 по 39 - Reserved. А мы берем из EDX:EAX, регистр DL - то есть как раз с 32 по 39. Зачем? А MSR 2CH вообще отсутствует
MSR -- это моделезависимый регистр процессора, а не чипсета. Если где и описаны, то в спецификациях на конкретные процессоры.
SII Как бы вы не правы. В набор чипов входит и процессор. blueboar Читай внимательнее i955 поддерживает процессоры Pentium 4. А у него есть . В тойже документации, но чуть ниже описаны регистры на другие модели. Ну что ты хочешь биос использует недокументированные возможности. Вот и изучай зачем. Если не путаю, то там хранится максимальное значение.
Pavia Процессор -- это не чипсет. То, что северный мост сейчас находится в одном корпусе (или даже кристалле) с процессором, не делает его процессором. MSRы -- это регистры процессора, а не чипсета.
Да, у чипсета регистры пишуться и читаются через ин/аут команды. мср - ТОЛЬКо для процессора. Половина из них не задокументирована. Автор еще заинтересован в теме? Имею некоторый опыт в реверсе биосов. Award BIOS 6.00 - в этой матери не чистый авард - а его модификация от феникса. Потому и сильные отличия от книги. Новые фениксы отличаются вообще кардинально.
MSR надо смотреть по типу процессора в Intel 64 and IA-32 Architectures Software Developer's Manual том 3B Appendix B Model Specific Registers Во вторых, для реверса кровь из носа необходима документация на чипсет, а также вывод lspci. Я использую автопарсинг вывода lspci http://hg.droid-developers.org/bios_parse/src/6e9289a613c3/file_parser.py Веду работу над скриптованием в помощь реверса биосов (большей частью для помощи проекту coreboot) Также применяю технику отладки биоса в qemu/serialice http://rghost.net/5461054 + http://www.serialice.com/ Вот еще пример (правда для арм, но принцип тот же) https://www.droid-developers.org/wiki/QEMU Пытаюсь как-то документировать работу, но не всегда хватает времени Если появился интерес - можно обращаться в личку.
я хоть и не автор, но сильно нуждаюсь в помощи... можете чтонибудь подсказать по такой теме http://www.wasm.ru/forum/viewtopic.php?id=39502 ?
Господа, раз вы тут с биосами разбираетесь, то не могли бы посмотреть, сколько тиков (INT8/IRQ0) в сутках в ваших биосах. Именно в биосах, а не в документации.