/******************************************************************************* Copyright(C) Jonas 'Sortie' Termansen 2011. This file is part of Sortix. Sortix is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Sortix is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Sortix. If not, see . x86/base.s Bootstraps the kernel and passes over control from the boot-loader to the kernel main function. *******************************************************************************/ .section .text .global beginkernel .type beginkernel, @function beginkernel: # Initialize the stack pointer. The magic value is from kernel.cpp. movl $stack, %esp addl $65536, %esp # 64 KiB, see kernel.cpp # Reset EFLAGS. # pushl $0 # popf # Push the pointer to the Multiboot information structure. push %ebx # Push the magic value. push %eax ## Disable interrupts. cli call KernelInit .size beginkernel, . - beginkernel .global HaltKernel HaltKernel: cli hlt jmp HaltKernel .size HaltKernel, . - HaltKernel .global WaitForInterrupt .type WaitForInterrupt, @function # void WaitForInterrupt(); WaitForInterrupt: hlt ret .size WaitForInterrupt, . - WaitForInterrupt