From beddf03109baecfdda77c6e4478ac975e49faf73 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Thu, 2 Sep 2004 04:16:24 +0000 Subject: [PATCH] Add comments. --- src/threads/intr-stubs.h | 15 +++++++++++++-- src/threads/intr-stubs.pl | 4 +++- src/threads/kernel.lds.S | 5 ++++- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/threads/intr-stubs.h b/src/threads/intr-stubs.h index b1f5039..3f2db7e 100644 --- a/src/threads/intr-stubs.h +++ b/src/threads/intr-stubs.h @@ -1,9 +1,20 @@ #ifndef HEADER_INTR_STUBS_H #define HEADER_INTR_STUBS_H -extern void (*const intr_stubs[256]) (void); +/* Interrupt stubs. -void intr_entry (void); + These are little snippets of code in intr-stubs.S, one for + each of the 256 possible x86 interrupts. They just push the + interrupt vector number on the stack (and, for interrupts that + don't have an error code, a fake error code), then jump to + intr_entry(). + + This array points to each of the interrupt stub entry points + so that intr_init() can easily find them. */ +typedef void intr_stub_func (void); +extern intr_stub_func *intr_stubs[256]; + +/* Interrupt return path. */ void intr_exit (void); #endif /* intr-stubs.h */ diff --git a/src/threads/intr-stubs.pl b/src/threads/intr-stubs.pl index 22eaf59..a52f379 100755 --- a/src/threads/intr-stubs.pl +++ b/src/threads/intr-stubs.pl @@ -42,7 +42,7 @@ intr_entry: movl %eax, %ds movl %eax, %es - # Call handler. + # Call interrupt handler. pushl %esp .globl intr_handler call intr_handler @@ -55,5 +55,7 @@ intr_exit: popl %es popl %ds addl $8, %esp + + # Return to caller. iret EOF diff --git a/src/threads/kernel.lds.S b/src/threads/kernel.lds.S index b5426e0..b911b29 100644 --- a/src/threads/kernel.lds.S +++ b/src/threads/kernel.lds.S @@ -2,17 +2,20 @@ OUTPUT_FORMAT("elf32-i386") OUTPUT_ARCH("i386") -ENTRY(start) +ENTRY(start) /* Kernel starts at "start" symbol. */ SECTIONS { + /* Specifies the virtual address for the kernel base. */ . = LOADER_PHYS_BASE + LOADER_KERN_BASE; _start = .; + /* Kernel starts with code, followed by read-only data and writable data. */ .text : { *(.text) } = 0x9090 .rodata : { *(.rodata) *(.rodata.*) } .data : { *(.data) } + /* BSS (zero-initialized data) is after everything else. */ _start_bss = .; .bss : { *(.bss) } _end_bss = .; -- 2.30.2