Bug 3342 - Wrong CPU capabilities detection
: Wrong CPU capabilities detection
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/libSDL)
: unstable
: all Linux
: P1 blocker
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2003-12-03 15:41 by
Modified: 2005-07-13 15:45 (History)


Attachments
"Заплатка" для корректного определения capabilities (works for me, как говорится) (308 bytes, application/x-gzip)
2003-12-03 16:33, Sir Raorn
no flags Details


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2003-12-03 15:41:32
Неправильно определяются возможности процессора, в частности поддержка 3DNow!,
что приводит к падениям по SIGILL на других процессорах.

В libSDL есть функция Hermes_X86_CPU(), возвращающая значение регистра EDX
после
выполнения команды cpuid с EAX=1, наличие 3DNow! подразумевается, если
установлен старший бит (0x80000000).

Однако это не так. Поддержка 3DNow! определяется проверкой старшего бита
(0x80000000) в EDX после выполнения команды cpuid с EAX=0x80000001 на
процессорах, поддерживающих это.
------- Comment #1 From 2003-12-03 16:04:27 -------
По-хорошему, для целей дистрибутива нужно вообще выкинуть эти самописные
определения из libSDL и использовать то, что возвращает ядро в /proc/cpu. Да,
этот патч будет не принят в libSDL, но ядро у нас гарантированно более
корректно
определяет возможности процессора, чем libSDL.
------- Comment #2 From 2003-12-03 16:24:27 -------
да. Более того - у меня есть код (C/C++), который корректно определяет
поддержку
MMX/SSE в CPU.

Можно его вытащить в библиотечку и слинковать с libSDL.
а можно это делать и через proc.

В общем - займусь на следующей неделе... может быть раньше.
------- Comment #3 From 2003-12-03 16:33:31 -------
Created an attachment (id=318) [details]
"Заплатка" для корректного определения capabilities (works for me, как
говорится)
------- Comment #4 From 2003-12-15 13:17:55 -------
fixed (SDL-1.2.6-alt3)

патч сработал и проверен.

Просьба проверить на машинах с AMD процессором ;-)