kernel po natazeni zrebootuje PC

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Sobota Listopad 13 14:58:17 CET 1999


On Fri, 12 Nov 1999, Petr Simek wrote:

> binutils obsahuji ld ktere se zrejme pouziva pri linkovani kernelua jeste
> dalsi veci.

A taky assembler (as). Kdyz jsem tady ty prihod cetl, tak jsem si
vzpomnel, jak jsme si hral s 2.0.38 a byl jsem liny upgradovat
binutils. Taky to blbnulo a prisel jsem na to, ze zpusob, jakym prelozil
tento (jestli se pamatuji dobre) radek z head.S:

        movl $SYMBOL_NAME(pg0)+7,SYMBOL_NAME(swapper_pg_dir)+__USER_PGD_PTRS*4

nebyl totozny s tim, co nam chtel basnik rict, protoze __USER_PGD_PTRS mu 
vyslo zaporne a celkovy vysledek byl nesmysl (krasne to bylo videt,
kdyz se to disassemblovalo). Vtip byl v tom, ze stare as vsechno pocitalo
jako signed. Pomohl nasledujici osklivy patch:

--- linux/include/asm-i386/pgtable.h.old        Sat Oct  9 23:31:07 1999
+++ linux/include/asm-i386/pgtable.h    Sun Oct 10 18:17:09 1999
@@ -216,7 +216,7 @@

 #define USER_PGD_PTRS ((unsigned long)__PAGE_OFFSET >> PGDIR_SHIFT)
 #define KERNEL_PGD_PTRS (PTRS_PER_PGD-USER_PGD_PTRS)
-#define __USER_PGD_PTRS (__PAGE_OFFSET >> PGDIR_SHIFT)
+#define __USER_PGD_PTRS (((__PAGE_OFFSET >> 1) & 0x7fffffff) >> (PGDIR_SHIFT-1))
 #define __KERNEL_PGD_PTRS (PTRS_PER_PGD-__USER_PGD_PTRS)

 #ifndef __ASSEMBLY__

Ale asi bude fakt lepsi pouzit nove binutils. :)

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux