Useful links
========================

Linux boot
------------------------

* [Linux/x86 boot protocol](https://www.kernel.org/doc/Documentation/x86/boot.txt)
* [Linux kernel parameters](https://github.com/torvalds/linux/blob/16f73eb02d7e1765ccab3d2018e0bd98eb93d973/Documentation/admin-guide/kernel-parameters.rst)

Protected mode
------------------------

* [64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf](http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html)

Memory management in the Linux kernel
--------------------------------------

* [Notes on the linux kernel VM subsystem by @lorenzo-stoakes](https://github.com/lorenzo-stoakes/linux-vm-notes)

Serial programming
------------------------

* [8250 UART Programming](http://en.wikibooks.org/wiki/Serial_Programming/8250_UART_Programming#UART_Registers)
* [Serial ports on OSDEV](http://wiki.osdev.org/Serial_Ports)

VGA
------------------------

* [Video Graphics Array (VGA)](http://en.wikipedia.org/wiki/Video_Graphics_Array)

IO
------------------------

* [IO port programming](http://www.tldp.org/HOWTO/text/IO-Port-Programming)

GCC and GAS
------------------------

* [GCC type attributes](https://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html)
* [Assembler Directives](http://www.chemie.fu-berlin.de/chemnet/use/info/gas/gas_toc.html#TOC65)


Important data structures
--------------------------

* [task_struct definition](http://lxr.free-electrons.com/source/include/linux/sched.h#L1274)


Useful links
------------------------

* [Linux x86 Program Start Up](http://dbp-consulting.com/tutorials/debugging/linuxProgramStartup.html)
* [Memory Layout in Program Execution (32 bits)](http://fgiasson.com/articles/memorylayout.txt)
