From: David Devecsery Date: Thu, 21 May 2020 13:26:54 +0000 (-0400) Subject: Added in several quality-of-life needed patches. X-Git-Url: https://git.devinivas.org/?a=commitdiff_plain;h=55ef996887295fa85b1dfd078963f03342323908;p=cs3210-lab1.git Added in several quality-of-life needed patches. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 4327ef2..8972f2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,8 +6,9 @@ endif() project(xv6) -#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -MD -gstabs+ -Werror -fno-omit-frame-pointer -fno-stack-protector") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing -Wall -fno-builtin -gstabs -Werror -fno-omit-frame-pointer -fno-stack-protector") +# Lab1 only +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-optimize-sibling-calls -fno-lto") set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG") set(CMAKE_C_FLAGS_DEBUG "-O0 -gstabs") diff --git a/include/asm/x86.h b/include/asm/x86.h index 4f80570..c25bf6b 100644 --- a/include/asm/x86.h +++ b/include/asm/x86.h @@ -103,17 +103,12 @@ readeflags(void) return eflags; } -// This needs to be always inlined, otherwise the ebp is modified -static __inline uint -read_ebp(void) -{ - uint ebp; - // Force the prologue before ebp - __asm __volatile("" : : :"memory"); - __asm __volatile("movl %%ebp,%0" : "=r" (ebp)); - - return ebp; -} +// This is a define, so its always inlined +#define read_ebp(dest) do { \ + __asm __volatile("" : : : "memory"); \ + __asm __volatile("movl %%ebp,%0" : "=r" (dest)); \ + __asm __volatile("" : : : "memory"); \ + } while (0) static inline void loadgs(ushort v)