kern

annotate src/boot/mboot.S @ 56:0be4615594df

finally, runqueues, blocking, waking up, idle loop etc, all seem to work fine on a single user process... Next up: try forking another one :)
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 15 Aug 2011 06:17:58 +0300
parents 7f9af8cddc96
children
rev   line source
nuclear@0 1 #define MAGIC 0x1badb002
nuclear@16 2 /* flags with bit 1 set means we need memory info */
nuclear@16 3 #define FLAGS 2
nuclear@0 4 #define STACK_SIZE 0x4000
nuclear@0 5
nuclear@0 6 .text
nuclear@0 7 .align 4
nuclear@1 8
nuclear@0 9 /* multiboot header */
nuclear@0 10 .long MAGIC
nuclear@0 11 .long FLAGS
nuclear@0 12 .long -(MAGIC + FLAGS) /* checksum */
nuclear@0 13
nuclear@1 14 .globl kentry
nuclear@0 15 kentry:
nuclear@0 16 /* setup a temporary kernel stack */
nuclear@0 17 movl $(stack + STACK_SIZE), %esp
nuclear@0 18 /* reset eflags register */
nuclear@0 19 pushl $0
nuclear@0 20 popf
nuclear@16 21 /* call the kernel main function. ebx points to the
nuclear@16 22 * multiboot information structure */
nuclear@16 23 push %ebx
nuclear@0 24 call kmain
nuclear@0 25 /* we dropped out of main, halt the CPU */
nuclear@0 26 cli
nuclear@0 27 hlt
nuclear@0 28
nuclear@0 29 /* space for the temporary kernel stack */
nuclear@0 30 .comm stack, STACK_SIZE