У меня есть следующий код:
#define SIGN(a) ((a)<0?-1:1)
u = (dot11 * dot02 - dot01 * dot12);
v = (dot00 * dot12 - dot01 * dot02);
if(u==0) return 0;
if(SIGN(u)!=SIGN(denom)) return 0;
if(v==0) return 0;
if(SIGN(v)!=SIGN(denom)) return 0;
return (u + v) < denom;
Это прекрасно работает в пользовательском пространстве, но при компиляции в модуле ядра у меня возникает следующая проблема:
WARNING: "__fixdfsi" undefined!
Это происходит каждый раз, когда u==0
или v==0
, или (SIGN(u)!=SIGN(denom))
и (SIGN(v)!=SIGN(denom))
.
Это, кажется, не имеет смысла, так как функция fixdfsi
преобразует целое число в двойное. Почему это происходит?
Как мне решить эту проблему?