Tutorial do Bran e primeira parte da avaliaÃ§Ã£o pronto.

A primeira parte do tutorial do Bran esta plenamente implementada a
partir desse commit e mais algumas coisas. Uma parte do codigo esta
feita diretamente em GAS porque o professor queria assim, mas tÃ§ao logo
seja nao mais preciso, vou tirar isso.

CMakeLists.txt
src/kernel/CMakeLists.txt:
	Pequenas mudanÃ§as. Coloquei por padrao a biblioteca em C que
funciona.

src/kernel/arch/i386/isa_specific_code.cpp
src/kernel/arch/i386/isa_specific_code.hpp
src/kernel/arch/i386/isa_specific_code.s:
src/kernel/arch/i386/pc/plataform_specific_code.hpp
	Adicionado funÃ§Ã£o para habilitar de novo as interrup.
	Adicionado o codigo em gas para a parte em asm e comentado o asm
feito em C no arquivo equivalente .cpp.
	A estrutura que representa os registradores foi movida para o codigo
especifico da plataforma. Ainda vou me livrar disso no futuro....

src/kernel/arch/i386/start.s
src/kernel/arch/i386/irq.s
src/kernel/arch/i386/isr.s:
	Mais asm um pouco desnecessario.

	Coloquei a parte de multiboot que esta em start.cpp em inline asm
para o arquivo start.s e ficou implementado em GAS.
	E nesses arquivos tambÃ©m foi colocado a implementaÃ§Ã£o da parte que
nÃ£o da para fazer em C de forma nenhuma, da parte do IRQ e do ISR.
	Depois mudar isso para a forma que estava antes, mais portavel e mais
vantagens.

src/kernel/arch/i386/pc/link.ld:
	Tive que rescrever o linker, estava dando problema quando o kernel
ficava maior, acho que a informaÃ§Ã£o de multiboot estava se perdendo e
o boot nÃ£o estava conseguindo ser encontrado.
	Bom, agora vai, acho que consegui.

src/kernel/compiler/gcc/quad/adddi3.c
src/kernel/compiler/gcc/quad/anddi3.c
src/kernel/compiler/gcc/quad/ashldi3.c
src/kernel/compiler/gcc/quad/ashrdi3.c
src/kernel/compiler/gcc/quad/cmpdi2.c
src/kernel/compiler/gcc/quad/divdi3.c
src/kernel/compiler/gcc/quad/fixdfdi.c
src/kernel/compiler/gcc/quad/fixsfdi.c
src/kernel/compiler/gcc/quad/fixunsdfdi.c
src/kernel/compiler/gcc/quad/fixunssfdi.c
src/kernel/compiler/gcc/quad/floatdidf.c
src/kernel/compiler/gcc/quad/floatdisf.c
src/kernel/compiler/gcc/quad/floatunsdidf.c
src/kernel/compiler/gcc/quad/iordi3.c
src/kernel/compiler/gcc/quad/lshldi3.c
src/kernel/compiler/gcc/quad/lshrdi3.c
src/kernel/compiler/gcc/quad/moddi3.c
src/kernel/compiler/gcc/quad/muldi3.c
src/kernel/compiler/gcc/quad/negdi2.c
src/kernel/compiler/gcc/quad/notdi2.c
src/kernel/compiler/gcc/quad/qdivrem.c
src/kernel/compiler/gcc/quad/quad.h
src/kernel/compiler/gcc/quad/subdi3.c
src/kernel/compiler/gcc/quad/ucmpdi2.c
src/kernel/compiler/gcc/quad/udivdi3.c
src/kernel/compiler/gcc/quad/umoddi3.c
src/kernel/compiler/gcc/quad/xordi3.c
src/kernel/compiler/gcc/local_static_vars.hpp
src/kernel/compiler/gcc/compiler_specific_code.hpp
src/kernel/compiler/gcc/flags.cmake:
	Tentativa de fazer o malloc funcionar fail.
	Para usar o malloc tem que concertar um erro no gcc,
implementando operaÃ§Ãµes quad. Uma coisa que tem no bsd, de onde eu
copiei esses arquivos, e nÃ£o funcionou de qq forma.
	Poder ser que com o linker concertado ele passe a funcionar, tem que
testar isso de novo. Os arquivos estÃ£o ai, mas esta desabilitado.

	Adicionado suporte a variaveis locais estaticas, que o gcc nÃ£o
funciona sem as funÃ§Ãµes que sÃ£o implementadas no arquivo
local_static_vars.hpp.

src/kernel/gdt.cpp
src/kernel/gdt.hpp:

GDT feito! Usando variaveis staticas globais, mas nÃ£o precisa de mais
de um gdt, entÃ£o serve.

src/kernel/idt.cpp
src/kernel/idt.hpp:
src/kernel/isr.cpp
src/kernel/isr.hpp:

	TambÃ©m funcionando! A mesma coisa do GDT, estatico e global.

	Tem que melhorar a coisa do vetor de interrupÃ§Ãµes.
	NÃ£o tem para que ter um tratador generico para passar para o
tratador especifico.

src/kernel/irq.cpp
src/kernel/irq.hpp

	IRQ feito! Mesma coisa que o IDT, tambÃ©m. As mesmas observaÃ§Ãµes.

src/kernel/keyboard.cpp
src/kernel/keyboard.hpp:

	O teclado esta so mostrando na tela. Tem que fazer um jeito de ter um
buffer com as teclas e funÃ§Ãµes para recuperar estas teclas.
	Tem que desenvolver mais, mas tem umas coisas jÃ¡ la.

src/kernel/main.cpp:

	O mais esta usando tudo ja! Pode ja dividir por 0.

src/kernel/monitor.cpp
src/kernel/monitor.hpp:

Finalmente criei um kprintf, ta meio paia mas esta servindo
Tentar usar uma variavel global estatica para usar objetos nessa parte,
estilo um cout.

src/kernel/start.cpp:

	Comentado a parte do multiboot. Voltar depois com isso de novo.
	Desabilito as interrupÃ§oes logo de inicio aqui, tem que habilitar
depois, Ã© feito isso no main.

src/kernel/timer.cpp
src/kernel/timer.hpp

	Timer funcionando, tem que desenvolver uma coisa mais elaborada aqui.