07.01.2013 Views

Linux i386 Önyükleme Kodu NASIL

Linux i386 Önyükleme Kodu NASIL

Linux i386 Önyükleme Kodu NASIL

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Linux</strong> <strong>i386</strong> <strong>Önyükleme</strong> <strong>Kodu</strong> <strong>NASIL</strong><br />

/*<br />

* Bu veri bölümünü ba¸slatır. Dikkat ederseniz yukarıda tümü<br />

* text bölümündedir çünkü bu bizim ba¸ska bir ¸sekilde<br />

* gideremeyece˘gimiz hizalama gereksinimidir.<br />

*/<br />

.data<br />

ALIGN<br />

/*<br />

* Tipik olarak 140 "quadwords" içerir; NR_CPUS’a ba˘glı olarak.<br />

*<br />

* D˙IKKAT! Herhangi bir ¸seyi de˘gi¸stirirseniz, bunun head.S’deki<br />

* gdt belirticisiyle e¸sle¸sti˘ginden emin olun.<br />

*/<br />

ENTRY(gdt_table)<br />

.quad 0x0000000000000000 /* NULL belirtici */<br />

.quad 0x0000000000000000 /* kullanılmadı */<br />

.quad 0x00cf9a000000ffff /* 0x10 kernel 4GB code at 0x00000000 */<br />

.quad 0x00cf92000000ffff /* 0x18 kernel 4GB data at 0x00000000 */<br />

.quad 0x00cffa000000ffff /* 0x23 user 4GB code at 0x00000000 */<br />

.quad 0x00cff2000000ffff /* 0x2b user 4GB data at 0x00000000 */<br />

.quad 0x0000000000000000 /* kullanılmadı */<br />

.quad 0x0000000000000000 /* kullanılmadı */<br />

/*<br />

* APM bölütleri bayt taneciklilik özelli˘gine sahiptir ve<br />

* tabanları ile sınırları çalı¸sma zamanında atanır.<br />

*/<br />

.quad 0x0040920000000000 /* 0x40 kötü BIOS’lar için APM ataması */<br />

.quad 0x00409a0000000000 /* 0x48 APM CS kod */<br />

.quad 0x00009a0000000000 /* 0x50 APM CS 16 kod (16 bit) */<br />

.quad 0x0040920000000000 /* 0x58 APM DS veri */<br />

.fill NR_CPUS*4,8,0 /* TSS’ler ve LDT’ler için bo¸sluk */<br />

idt_descr ve gdt_table’dan önce olan ALIGN makrosu performans ile ilgilidir.<br />

6.6. Kaynakça<br />

•<br />

•<br />

•<br />

•<br />

IA–32 Intel Architecture Software Developer’s Manual(B111)<br />

MultiProcessor Specification(B112)<br />

Using as(B113)<br />

GNU Binary Utilities(B114)<br />

7. linux/init/main.c<br />

Bu bölümü yazarken kendimi suçlu hissettim çünkü yeterince olmasa bile hakkında çok sayıda belge var.<br />

start_kernel() destekli i¸slevler, sürekli geli¸sen i¸sletim sistemi dahili bile¸senlerine ba˘gımlı oldu˘gu için,<br />

sürümden sürüme de˘gi¸sir. Sık sık belge güncellemek için vaktim olmadı˘gından bu bölümü olabildi˘gince basit<br />

tutmaya karar verdim.<br />

7.1. start_kernel()<br />

///////////////////////////////////////////////////////////////////////////////<br />

asmlinkage (B115) void _ _init (B116) start_kernel(void)<br />

http://belgeler.org <strong>Linux</strong> Kitaplı˘gı 46 / 77

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!