Bom dia Gil.
Sim eu sei, a estrutura dos arquivos ELF64 é um pouco diferente dos ELF32, a principio o formato é muito antigo, se você ver os documentos do link abaixo eles datam de 1997-98, mas funcionam! O carregamento não diferente dos arquivos ELF convencionais, o que eu mais pude perceber, é que alguns campos das estruturas trocam de lugar com outros, e o tamanho dos mesmos aumenta.
O GRUB não carrega arquivos ELF de 64-bit, só a versão 2 que o faz, sugiro para manter a retro-compatibilidade com outros bootloaders, você fazer um carregador, você faz ele como se fosse o kernel que o GRUB deve carregar e você especifica no menu.lst o seu kernel de 64-bit, o carregador deverá ver a lista de arquivos carregados pelo GRUB e então carregar o kernel, fazer os passos iniciais de inicialização para que o processador entre em modo compatível (poderá então usar instruções 64-bit), saltar para a entrada do kernel, e ai então o seu kernel deverá entrar em modo longo (totalmente 64-bit).
Eu posso te mandar o loader que eu fiz para entrar em modo longo, você terá que antes de carregar o seu kernel, no momento de ir para modo compatível, atribuir a paginação com nível 4 (pml4).
ELF64:
http://www.openwatcom.com/ftp/devel/docs/elf-64-gen.pdfhttp://ftp.parisc-linux.org/docs/arch/elf-64-hp.pdf Paging:
http://www.sandpile.org/aa64/paging.htmCriando um kernel 64-bit e sobre o long mode:
http://wiki.osdev.org/Creating_a_64-bit_kernelhttp://wiki.osdev.org/Entering_Long_Mode_Directlyhttp://wiki.osdev.org/User:Stephanvanschaik/Setting_Up_Long_ModeEstas foram minhas maiores referencias, pelo menos as que mais usei para gerar o kernel! Ainda não repassei tudo certinho, então pro SOmBRA X86-64 sair vai demorar um pouco.
Abraços,
Mounter