From 8b4e2a08febc8b957b44732dbc7da831479a0005 Mon Sep 17 00:00:00 2001 From: rtm Date: Sat, 1 Jul 2006 21:26:01 +0000 Subject: swtch saves callee-saved registers swtch idles on per-CPU stack, not on calling process's stack fix pipe bugs usertest.c tests pipes, fork, exit, close --- x86.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'x86.h') diff --git a/x86.h b/x86.h index b905f83..7bc677f 100644 --- a/x86.h +++ b/x86.h @@ -244,6 +244,30 @@ read_esp(void) return esp; } +static __inline uint32_t +read_esi(void) +{ + uint32_t esi; + __asm __volatile("movl %%esi,%0" : "=r" (esi)); + return esi; +} + +static __inline uint32_t +read_edi(void) +{ + uint32_t edi; + __asm __volatile("movl %%edi,%0" : "=r" (edi)); + return edi; +} + +static __inline uint32_t +read_ebx(void) +{ + uint32_t ebx; + __asm __volatile("movl %%ebx,%0" : "=r" (ebx)); + return ebx; +} + static __inline void cpuid(uint32_t info, uint32_t *eaxp, uint32_t *ebxp, uint32_t *ecxp, uint32_t *edxp) { @@ -280,6 +304,20 @@ read_tsc(void) return tsc; } +// disable interrupts +static __inline void +cli(void) +{ + __asm __volatile("cli"); +} + +// enable interrupts +static __inline void +sti(void) +{ + __asm __volatile("sti"); +} + struct PushRegs { /* registers as pushed by pusha */ uint32_t reg_edi; -- cgit v1.2.3