Award.ROM.by

ROM.by

бета -версия статьи ;)
 

Поддержка Tualatin

 

Добавление поддержки Tualatin в Award BIOS.

Эпиграф:

в случае использования данной статьи читателем как руководство к действию,
автор заведомо ПРЕДПОЛАЕТ два условия:

- способность читателя переслать из регистра в регистр как минимум два байта

- положительный ответ на вопрос «А оно вам надо?»

 

Подробности распаковки и запаковки прошивки уже были изложены в статье «Редактируем Award BIOS». Поэтому разговор будет вестись лишь о редактировании конкретно original.tmp.

 

Главные отличия инициализации Tualatin от Coppermine/Mendocino:

- другой CPUID: 6Bx

- другая «таблица» коэффициентов  (точнее – даже две)

 

Итак, что предстоит сделать:

- добавить определение CPUID 6Bx (и вывод соответствующего названия)

- добавить определение «туалатиновского» коэффициента умножения

- добавить «туалатиновские» микрокоды (6B0, 6B1)

В идеальном случае это всё. Дополнительно может понадобиться (в основном на платах, изначально не поддерживающих Coppermine или «крайне» брэндовых, типа MSI, Asus сотоварищи):

- исправить (исключить) неправильную инициализацию L2-кэша

- исправить неправильное отображение названия/частоты процессора из-за старого алгоритма вывода на экран

 

 

Как будем  добавлять?

 

Понятно, что изменять размер original.tmp нельзя. Как же (куда) добавить «свою» подпрограмму? А просто – в original.tmp есть достаточно много пустого места, куда и можно вставить свои подпрограммы. Например, в конце первого сегмента (адреса ~F800-FA00 - FFFF), как правило, всегда есть 1-2kB неиспользуемого, непрерывно пустого пространства. Этого нам вполне хватит.

 

У меня есть «универсальная» подпрограммка (точнее, «сборка»), в ней реализованы:

- детект коэффициента (с таблицами коэффициентов)

- детект имени (с самими именами)

- таблица степпингов (для брэндовских матерей)

 

Копируем её (с помощью любого hex-редактора) по адресу FC00 (именно на этот «стартовый» адрес она рассчитана, хотя чуть подредактировав, можно вставить её и по другому адресу).

Если вы уже скопировали её в original.tmp по FC00, то по адресу:

FF00 – определение имени процессора (FC00 – начало таблицы названий процессоров)

FDF0 – определение коэффициента (FD80-FDEF – таблица коэффициентов)

скопирована именно

FFB0 – таблица степпингов (нужна лишь для брэндовых/старых матерей)

Примечание:

В сборке реализована инициализация сразу всех процессоров (в том числе частично – VIA/Cyrix III), т.к. делать лишь «добавку» туалатина очень неудобно. Код подпрограмм в сборке не до конца оптимизирован, т.к. находится в постоянном процессе переработки. Однако, главное - он точно рабочий, а кто хочет что-то изменить-добавить, может использовать исходники.

 

Вариант 1. Правка биоса для «новых» плат (в основном – «безродных», т.е. не «брэндов»). Рассмотрим на примере прошивки PCPartner i440BX модели p930 (маркировка 35(C)-8930-xx), биос ver. “BIOS-I-2M (2K001120)”, 11/20/2000.

 

 

1. Добавление CPUID.

 

Ищем строчку “GenuntelineI” (можно лишь по “Genu”).

 

00003540:  32 80 E4 F7-0F 30 66 61-C3 75 35 47-65 6E 75 6E  2Афў00fa+u5Genun

00003550:  74 65 6C 69-6E 65 49 C1-35 43 79 72-69 74 65 61  telineI+5Cyritea

00003560:  64 78 49 6E-73 CE 35 43-65 6E 74 61-75 6C 73 61  dxIns+5Centaulsa

00003570:  75 72 48 FF-FF 24 F0 3C-60 74 2D 66-B9 1E 01 00  urH  $Ё<`t-f¦^O

 

Два байта сразу перед ней – смещение начала подпрограммы определения процессора (для старых/брэндовских плат – это таблица степпингов, но этот случай рассмотрим позже). Переходим по этому адресу – 3575 («наоборот», т.к. это “word”):

 

00003575: 24F0                         and       al,0F0 ;"Ё"

;это и есть подпрограмма определения CPU:

00003577: 3C60                         cmp       al,060 ;"`"

00003579: 742D                         je        0000035A8   -------- (4)

0000357B: 66B91E010000                 mov       ecx,00000011E ;"  O^"

00003581: 0F32                         rdmsr

00003583: 662500008000                 and       eax,000800000 ;" А  "

00003589: 751D                         jne       0000035A8   -------- (5)

0000358B: 66B801000000                 mov       eax,000000001 ;"   O"

00003591: 0FA2                         cpuid

00003593: 3C6A                         cmp       al,06A ;"j"

00003595: 7505                         jne       00000359C   -------- (6)

00003597: BEBD8F                       mov       si,08FBD ;"П-"

0000359A: EB1D                         jmps      0000035B9   -------- (7)

0000359C: 3C80                         cmp       al,080 ;"А"

0000359E: 720D                         jb        0000035AD   -------- (8)

000035A0: 0ADB                         or        bl,bl

000035A2: 7409                         je        0000035AD   -------- (9)

000035A4: FECB                         dec       bl

000035A6: 7509                         jne       0000035B1   -------- (A)

000035A8: BEAB8F                       mov       si,08FAB ;"Пл"

000035AB: EB0C                         jmps      0000035B9   -------- (B)

000035AD: 3C70                         cmp       al,070 ;"p"

000035AF: 7205                         jb        0000035B6   -------- (C)

000035B1: BE888F                       mov       si,08F88 ;"ПИ"

000035B4: EB03                         jmps      0000035B9   -------- (D)

000035B6: BE9A8F                       mov       si,08F9A ;"ПЪ"

;На выходе подпрограммы определения процессора – смещение строчки его имени:

000035B9: 89B62D02                     mov       [bp][0022D],si

000035BD: E877FF                       call      000003537   -------- (E)

000035C0: C3                           retn

 

Это и есть подпрограмма определения процессора. Меняем её на свою (по смещению FF00):

 

00003575: E888C9                       call      00000FF00

00003578: E93E00                       jmp       0000035B9

; этот код в результате просто пропускается:

0000357B: 66B91E010000                 mov       ecx,00000011E ;"  O^"

00003581: 0F32                         rdmsr

000035B4: EB03                         jmps      0000035B9

000035B6: BE9A8F                       mov       si,08F9A ;"ПЪ"

 

; делаем jmp сюда, чтобы полученное нашей подпрограммой смещение (si) имени процессора было занесено в память:

000035B9: 89B62D02                     mov       [bp][0022D],si ; <--------

000035BD: E877FF                       call      000003537

000035C0: C3                           retn

 

2. Вычисляем коэффициент.

 

Таблица коэффициентов всегда начинается «мендочинистыми», поэтому очень просто её найти по “0A 06 08 04” (hex):

 

00003610:  04 C3 8B C0-0A 06 08 04-0B 07 09 05-07 0E 10 0C  ♦+ЛL0♠•♦>•0♣•d>+

00003620:  04 0F 03 0D-12 16 18 04-13 17 11 05-07 0E 10 14  ♦0♥d¦-↑♦!¦<♣•d>¶

00003630:  04 0F 03 15-00 06 08 0A-05 07 09 0B-0C 0E 0D 0F  ♦0♥§ ♠•0♣•0>+dd0

00003640:  0D 0F 00 00-0A 06 08 06-0B 07 09 06-0A 0E 10 0C  d0  0♠•♠>•0♠0d>+

00003650:  06 0F 06 0D-0A 06 08 14-0B 07 09 16-12 0E 10 0C  ♠0♠d0♠•¶>•0-¦d>+

00003660:  18 0F 1A 0D-E8 3E 5A 75-1A B1 C3 E8-89 07 0C 40  ↑0→dш>Zu→-+шЙ•+@

 

Опять же по клавише F6 в hiew находим, где загружается адрес 3614h (коэффициенты для Mendocino):

 

00003699: B85436                       mov       ax,03654 ;"6T"

0000369C: 80BE310270                   cmp       b,[bp][00231],070 ;"p"

000036A1: 7403                         je        0000036A6   -------- (9)

000036A3: B84436                       mov       ax,03644 ;"6D"

000036A6: 03F0                         add       si,ax

000036A8: EB0F                         jmps      0000036B9   -------- (A)

000036AA: E80D00                       call      0000036BA   -------- (B)

000036AD: 7206                         jb        0000036B5   -------- (C)

000036AF: 81C62436                     add       si,03624 ;"6$"

000036B3: EB04                         jmps      0000036B9   -------- (D)

000036B5: 81C61436                     add       si,03614 ;"6¶"  <------------- koef Mendocino

000036B9: C3                           retn

 

Находим начало этой подпрограммы:

 

0000363B: 0B0C                         or        cx,[si]

0000363D: 0E                           push      cs

0000363E: 0D0F0D                       or        ax,00D0F ;"d0"

00003641: 0F0000                       sldt      [bx][si]

00003644: 0A060806                     or        al,[00608]

00003648: 0B07                         or        ax,[bx]

0000364A: 09060A0E                     or        [00E0A],ax

0000364E: 100C                         adc       [si],cl

00003650: 06                           push      es

00003651: 0F06                         clts

00003653: 0D0A06                       or        ax,0060A ;"♠0"

00003656: 0814                         or        [si],dl

00003658: 0B07                         or        ax,[bx]

0000365A: 0916120E                     or        [00E12],dx

0000365E: 100C                         adc       [si],cl

00003660: 180F                         sbb       [bx],cl

00003662: 1A0D                         sbb       cl,[di]

; всё выше – явный бред, в смысле – данные, а не код.

; А вот дальше и есть подпрограмма определения коэффициента

; убедиться в том, что это и есть точка входа можно, опять же, по F6 – подпрограмма должна где-нибудь вызываться

00003664: E83E5A                       call      0000090A5   -------- (1) ; проверка на Cyrix-ность :)

00003667: 751A                         jne       000003683   -------- (2)

00003669: B1C3                         mov       cl,0C3 ;"+"

0000366B: E88907                       call      000003DF7   -------- (3)

0000366E: 0C40                         or        al,040 ;"@"

00003670: E87707                       call      000003DEA   -------- (4)

00003673: B148                         mov       cl,048 ;"H"

00003675: E87F07                       call      000003DF7   -------- (5)

00003678: 83E00F                       and       ax,00F ;"0"

0000367B: 8BF0                         mov       si,ax

0000367D: 81C63436                     add       si,03634 ;"64"

00003681: EB36                         jmps      0000036B9   -------- (6)

; нет – «нормальный» процессор

00003683: 66B92A000000                 mov       ecx,00000002A ;"   *"

00003689: 0F32                         rdmsr

; считываем MSR_2Ah

0000368B: 66C1E816                     shr       eax,016 ;"-"

0000368F: 83E00F                       and       ax,00F ;"0"

; MSR_2Ah[22-26] – 4 бита коэффициента

00003692: 8BF0                         mov       si,ax

00003694: E8F959                       call      000009090   -------- (7)

; проверка на другую цыриксность ;)

00003697: 7511                         jne       0000036AA   -------- (8)

00003699: B85436                       mov       ax,03654 ;"6T"

0000369C: 80BE310270                   cmp       b,[bp][00231],070 ;"p"

000036A1: 7403                         je        0000036A6   -------- (9)

000036A3: B84436                       mov       ax,03644 ;"6D"

000036A6: 03F0                         add       si,ax

000036A8: EB0F                         jmps      0000036B9   -------- (A)

; опять – «нормальный» процессор :)

000036AA: E80D00                       call      0000036BA   -------- (B)

; проверка копер-некоппер

000036AD: 7206                         jb        0000036B5   -------- (C)

000036AF: 81C62436                     add       si,03624 ;"6$"

000036B3: EB04                         jmps      0000036B9   -------- (D)

000036B5: 81C61436                     add       si,03614 ;"6¶"

000036B9: C3                           retn

 

На выходе – лишь смещение строки коэффициентов процессора. Поэтому просто заменяем  всю эту подпрограмму на нашу:

 

00003660: 180F                         sbb       [bx],cl

00003662: 1A0D                         sbb       cl,[di]

00003664: E989C7                       jmp       00000FDF0

00003667: 751A                         jne       000003683

00003669: B1C3                         mov       cl,0C3 ;"+"

………

 

3. Добавление микрокодов.

 

Ничего особенного – подробно расписано на iXBT. Могу лишь предупредить – обязательно проверяйте прошивку после добавления микрокодов с помощью открытия её в modbin-е. Ежели матернётся – что-то сделали не так.

Примечание: некоторые версии cbrom некорректно перепаковывают прошивки – например, cbrom ver.2.15 неправильно работает с большинством старых биосов (хотя всё показывает без проблем), поэтому в таком случае пользуйтесь ver. 2.07).

 

 

 

Вариант 2. Правим «брэнд» - i440BX/MSI-6163 ver.3.10 (10/11/2000).

 

1. Добавление CPUID.

 

Ищем строчку “GenuntelineI” (можно лишь по “Genu”).

 

00003E40:  5D CF 52 3E-47 65 6E 75-6E 74 65 6C-69 6E 65 49  ]¦R>GenuntelineI

00003E50:  FF FF 10 06-D1 10 10 16-D1 10 30 16-D1 10 30 06    >♠T>>-T>0-T>0♠

00003E60:  D1 10 50 06-D1 10 60 06-D1 10 70 06-D1 10 80 06  T>P♠T>`♠T>p♠T>А♠

00003E70:  D1 10 FF FF-2E 8B C0 2E-8B C0 2E 8B-C0 2E 8B C0  T>  .ЛL.ЛL.ЛL.ЛL

 

По смещению 3E52h находится таблица поддерживаемых степпингов (такой способ инициализации остался в наследство от старых P1):

 

00003E40:  5D CF 52 3E-47 65 6E 75-6E 74 65 6C-69 6E 65 49  ]¦R>GenuntelineI

00003E50:  FF FF 10 06-D1 10 10 16-D1 10 30 16-D1 10 30 06    >♠T>>-T>0-T>0♠

00003E60:  D1 10 50 06-D1 10 60 06-D1 10 70 06-D1 10 80 06  T>P♠T>`♠T>p♠T>А♠

00003E70:  D1 10 FF FF-2E 8B C0 2E-8B C0 2E 8B-C0 2E 8B C0  T>  .ЛL.ЛL.ЛL.ЛL

 

На каждый степпинг – четыре байта: два на «маску» и два на никому не нужные его характеристики, оставшиеся, вообще, ещё от 386-х (т.е. есть ли сопроцессор и прочая ерунды, не используемая в коде биоса), соответственно – это всегда будет D1 10.

 

Переделываем ссылку на наши степпинги:

 

00003E40:  5D CF B0 FF-47 65 6E 75-6E 74 65 6C-69 6E 65 49  ]¦ -GenuntelineI

00003E50:  FF FF 10 06-D1 10 10 16-D1 10 30 16-D1 10 30 06    >♠T>>-T>0-T>0♠

00003E60:  D1 10 50 06-D1 10 60 06-D1 10 70 06-D1 10 80 06  T>P♠T>`♠T>p♠T>А

00003E70:  D1 10 FF FF-2E 8B C0 2E-8B C0 2E 8B-C0 2E 8B C0  T>  .ЛL.ЛL.ЛL.ЛL

 

Чтоб найти подпрограмму определения процессора, делаем поиск, например, по “Celeron”:

 

00007BA0:  7B AE 7B AE-7B DD 7B AE-7B AF 7B AF-7B 00 00 43  {о{о{¦{о{п{п{  C

00007BB0:  79 72 69 78-20 4D 65 64-69 61 47 58-20 57 69 74  yrix MediaGX Wit

00007BC0:  68 20 4D 4D-58 00 49 20-58 45 4F 4E-28 74 6D 29  h MMX I XEON(tm)

00007BD0:  00 50 45 4E-54 49 55 4D-20 49 49 49-00 50 45 4E   PENTIUM III PEN

00007BE0:  54 49 55 4D-20 49 49 00-49 4E 54 45-4C 28 52 29  TIUM II INTEL(R)

00007BF0:  20 43 45 4C-45 52 4F 4E-28 54 4D 29-00 4D 6F 62   CELERON(TM) Mob

00007C00:  69 6C 65 20-50 65 6E 74-69 75 6D 20-49 49 00 50  ile Pentium II P

00007C10:  45 4E 54 49-55 4D 20 50-52 4F 00 00-00 55 6E 6B  ENTIUM PRO   Unk

00007C20:  6E 6F 77 6E-00 66 60 50-E8 76 00 3C-30 58 73 1F  nown f`Pшv <0XsЎ

 

Мы нашли таблицу имён процессоров, выбираем какое-нибудь из них для поиска, где загружается смещение имени. Я обычно ищу по “Mobile”:

 

...

00007B0D: BEFD7B                       mov       si,07BFD ; <------ загрузка смещения “Mobile

00007B10: EB19                         jmps      000007B2B   -------- (5)

00007B12: 24F0                         and       al,0F0 ;"Ё"

00007B14: 3C60                         cmp       al,060 ;"`"

00007B16: 7410                         je        000007B28   -------- (6)

 

Находим начало подпрограммы (будет после ret предыдущей)

 

00007AE8: C22C3D                       retn      03D2C ;"=,"

00007AEB: C3                           retn

; начало подпрограммы определения процессора

00007AEC: 8A463D                       mov       al,[bp][0003D]

00007AEF: 247E                         and       al,07E ;"~"

00007AF1: 3C58                         cmp       al,058 ;"X"

00007AF3: BE1D7C                       mov       si,07C1D ;"|↔"

00007AF6: 7708                         ja        000007B00   -------- (1)

00007AF8: 0FB6F0                       movzx     si,al

00007AFB: 2E8BB4557B                   mov       si,cs:[si][07B55]

00007B00: 81FEDD7B                     cmp       si,07BDD ;"{¦"

00007B04: 754E                         jne       000007B54   -------- (2)

00007B06: E89801                       call      000007CA1   -------- (3)

00007B09: 3C6A                         cmp       al,06A ;"j"

00007B0B: 7505                         jne       000007B12   -------- (4)

00007B0D: BEFD7B                       mov       si,07BFD ; <------ загрузка смещения “Mobile”

00007B10: EB19                         jmps      000007B2B   -------- (5)

00007B12: 24F0                         and       al,0F0 ;"Ё"

00007B14: 3C60                         cmp       al,060 ;"`"

00007B16: 7410                         je        000007B28   -------- (6)

00007B18: 66B91E010000                 mov       ecx,00000011E ;"  O^"

00007B1E: 0F32                         rdmsr

00007B20: 662500008000                 and       eax,000800000 ;" А  "

00007B26: 7403                         je        000007B2B   -------- (7)

00007B28: BEE87B                       mov       si,07BE8 ;"{ш"

00007B2B: 66B801000000                 mov       eax,000000001 ;"   O"

00007B31: 0FA2                         cpuid

00007B33: 3C80                         cmp       al,080 ;"А"

00007B35: 720D                         jb        000007B44   -------- (8)

00007B37: 0ADB                         or        bl,bl

00007B39: 7409                         je        000007B44   -------- (9)

00007B3B: BEE87B                       mov       si,07BE8 ;"{ш"

00007B3E: FECB                         dec       bl

00007B40: 7412                         je        000007B54   -------- (A)

00007B42: EB04                         jmps      000007B48   -------- (B)

00007B44: 3C70                         cmp       al,070 ;"p"

00007B46: 7205                         jb        000007B4D   -------- (C)

00007B48: BED17B                       mov       si,07BD1 ;"{T"

00007B4B: EB07                         jmps      000007B54   -------- (D)

00007B4D: 3C30                         cmp       al,030 ;"0"

00007B4F: 7303                         jae       000007B54   -------- (E)

00007B51: BE0F7C                       mov       si,07C0F ;"|0"

00007B54: C3                           retn

 

В подпрограмме выходной параметр лишь “si” процессора, так что просто заменяем на нашу:

 

00007AE8: C22C3D                       retn      03D2C ;"=,"

00007AEB: C3                           retn

00007AEC: E91184                       jmp       00000FF00

00007AEF: 247E                         and       al,07E ;"~"

00007AF1: 3C58                         cmp       al,058 ;"X"

 

2. Вычисляем коэффициент.

 

Ищем начало коэффициентов по “0A 06 08 04” (hex):

 

00003F90:  0A 06 08 04-0B 07 09 05-07 0E 10 0C-04 0F 03 0D  0♠•♦>•0♣•d>+♦0♥d

00003FA0:  12 16 18 04-13 17 11 05-07 0E 10 14-04 0F 03 15  ¦-↑♦!¦<♣•d>¶♦0♥§

 

Находим, где они загружаются:

 

00004022: 7206                         jb        00000402A   -------- (4)

00004024: 81C6A03F                     add       si,03FA0 ;"?а"

00004028: EB04                         jmps      00000402E   -------- (5)

0000402A: 81C6903F                     add       si,03F90 ; <---- koef Mendocino

0000402E: 2E0FB60C                     movzx     cx,b,cs:[si]

00004032: 8BC3                         mov       ax,bx

00004034: 33D2                         xor       dx,dx

00004036: D1E0                         shl       ax,1

00004038: F7F9                         idiv      cx

 

Находим начало подпрограммы вычисления частоты процессора:

 

00004002: 7058                         jo        00000405C   -------- (1)

00004004: 022D                         add       ch,[di]

00004006: 3260F4                       xor       ah,[bx][si][-000C]

00004009: 0100                         add       [bx][si],ax

; выше – бред, в смысле – данные

; начало

0000400B: E82102                       call      00000422F ; подпрограмма вычисления частоты процессора

; далее вычисляем коэффициент

0000400E: 66B92A000000                 mov       ecx,00000002A ;"   *"

00004014: 0F32                         rdmsr

00004016: 66C1E816                     shr       eax,016 ;"-"

0000401A: 83E00F                       and       ax,00F ;"0"

0000401D: 8BF0                         mov       si,ax

0000401F: E8BD00                       call      0000040DF   -------- (3)

00004022: 7206                         jb        00000402A   -------- (4)

00004024: 81C6A03F                     add       si,03FA0 ;"?а"

00004028: EB04                         jmps      00000402E   -------- (5)

0000402A: 81C6903F                     add       si,03F90

; и заносим его в cx для вычисления FSB и последующего «округления» частоты процессора

0000402E: 2E0FB60C                     movzx     cx,b,cs:[si]

00004032: 8BC3                         mov       ax,bx

00004032: 8BC3                         mov       ax,bx

00004034: 33D2                         xor       dx,dx

00004036: D1E0                         shl       ax,1

00004038: F7F9                         idiv      cx

 

Нас интересует лишь часть, где вычисляется коэффициент, меняем её:

 

0000400B: E82102                       call      00000422F

0000400E: E8DFBD                       call      00000FDF0

00004011: E91A00                       jmp       00000402E

; этот код просто пропускается

00004014: 0F32                         rdmsr

00004016: 66C1E816                     shr       eax,016 ;"-"

0000401A: 83E00F                       and       ax,00F ;"0"

0000401D: 8BF0                         mov       si,ax

0000401F: E8BD00                       call      0000040DF

00004022: 7206                         jb        00000402A

00004024: 81C6A03F                     add       si,03FA0 ;"?а"

00004028: EB04                         jmps      00000402E

0000402A: 81C6903F                     add       si,03F90 ;"?Р"

 

;делаем jmp сюда

0000402E: 2E0FB60C                     movzx     cx,b,cs:[si] ; <------

00004032: 8BC3                         mov       ax,bx

 

3. Добавление микрокодов.

 

Аналогично  предыдущему варианту.

 

4. Дополнительные проверки.

 

Старые платы Slot1, поддерживающие ещё даже и прародителя PentiumPro (как и в этом случае), имеют расширенную инициализацию L2-кэша. Для того, чтоб не применять её к новым процессорам, где подобная инициализация не нужна, нужно сделать возможность пропустить этот участок кода и для Tualatin.

Ищем место кода, где есть проверка на коппермайнистость - ищем по маске CPUID коппера 0680h, т.е. “80 06”(hex). После нескольких вариантов, находим именно проверку:

 

00004599: 0F8CAC01                     jl        000004749

0000459D: 8BD8                         mov       bx,ax

0000459F: 66B91E010000                 mov       ecx,00000011E

000045A5: 0F32                         rdmsr

000045A7: 662500008000                 and       eax,000800000

000045AD: 0F859801                     jne       000004749

000045B1: 81FB8006                     cmp       bx,00680 ;"♠А"

000045B5: 0F849001                     je        000004749   -------- (7)

000045B9: 81FB3006                     cmp       bx,00630 ;"♠0"

 

И заменяем её на такую, чтоб условие подходило и для туалатинов и при этом вписывалось в объём исправленного:

 

00004599: 0F8CAC01                     jl        000004749

0000459D: 8BD8                         mov       bx,ax

0000459F: 66B91E010000                 mov       ecx,00000011E

000045A5: 0F32                         rdmsr

000045A7: 662500008000                 and       eax,000800000

000045AD: 0F859801                     jne       000004749

000045B1: 80FB80                       cmp       bl, 080 ;"А"

000045B4: 7203                         jb        0000045B9

000045B6: E99001                       jmp       000004749

000045B9: 81FB3006                     cmp       bx,00630 ;"♠0

 

Хотя, честно говоря, этот пункт, ИМХО, не принципиален и вряд ли влияет на работу L2 новых процессоров.

 

Итого. Как видно, процесс добавления поддержки туалатинов для человека, имеющего опыт работы с hiew/asm - достаточно простой. Для неопытного – покажется полным кошмаром. Поэтому если вы относитесь ко второму случаю – лучше подождите, пока прошивка для вашей платы появится на bios.rom.by.

 

Севко Роман aka apple_rom, 16.7.02.

 

www.ROM.by

 

Перепечатка допускается только с указанием источника информации.

 

 

Hosted by uCoz