X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pintos-anon;a=blobdiff_plain;f=src%2Fthreads%2Fintr-stubs.S;h=adb674e0f2e36755d95066e2156f53c2876d2ca4;hp=7fcd3dcbc1c51c64856cd913591ce62fa421cc7b;hb=dd3e6bfbf9bda711367047e4224695d5464fcfb4;hpb=2a7b349c85aef5b3e54d3c4850a069a7c448af9a diff --git a/src/threads/intr-stubs.S b/src/threads/intr-stubs.S index 7fcd3dc..adb674e 100644 --- a/src/threads/intr-stubs.S +++ b/src/threads/intr-stubs.S @@ -44,7 +44,7 @@ intr_entry: stack, and returns to the caller. This is a separate function because it is called directly when - we launch a new user process (see execute_thread() in + we launch a new user process (see start_process() in userprog/process.c). */ .globl intr_exit .func intr_exit @@ -74,19 +74,19 @@ intr_exit: Most of the stubs do this: - 1. Push EBP on the stack (frame_pointer in `struct intr_frame'). + 1. Push %ebp on the stack (frame_pointer in `struct intr_frame'). 2. Push 0 on the stack (error_code). 3. Push the interrupt number on the stack (vec_no). The CPU pushes an extra "error code" on the stack for a few - interrupts. Because we want EBP to be where the error code + interrupts. Because we want %ebp to be where the error code is, we follow a different path: 1. Push a duplicate copy of the error code on the stack. - 2. Replace the original copy of the error code by EBP. + 2. Replace the original copy of the error code by %ebp. 3. Push the interrupt number on the stack. */ @@ -97,13 +97,13 @@ intr_stubs: /* This implements steps 1 and 2, described above, in the common case where we just push a 0 error code. */ #define zero \ - pushl %ebp; \ + pushl %ebp; \ pushl $0 /* This implements steps 1 and 2, described above, in the case where the CPU already pushed an error code. */ #define REAL \ - pushl (%esp); \ + pushl (%esp); \ movl %ebp, 4(%esp) /* Emits a stub for interrupt vector NUMBER. @@ -111,7 +111,6 @@ intr_stubs: or `REAL', if the CPU pushes an error code for us. */ #define STUB(NUMBER, TYPE) \ .text; \ -.globl intr##NUMBER##_stub; \ .func intr##NUMBER##_stub; \ intr##NUMBER##_stub: \ TYPE; \