Date: Fri, 6 Sep 2002 00:00:24 -0700 (PDT) From: Jonathan Mini <mini@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 17136 for review Message-ID: <200209060700.g8670Opb085074@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://people.freebsd.org/~peter/p4db/chv.cgi?CH=17136 Change 17136 by mini@mini_stylus on 2002/09/05 23:59:53 Remove unused complexity in {get,set}context(). Affected files ... .. //depot/projects/kse/lib/libc/i386/gen/getcontext.S#7 edit Differences ... ==== //depot/projects/kse/lib/libc/i386/gen/getcontext.S#7 (text+ko) ==== @@ -33,22 +33,10 @@ #define MC_SIZE 640 /* sizeof mcontext_t */ #define UC_MC_OFFSET 16 /* offset to mcontext from ucontext */ #define UC_MC_LEN_OFFSET 96 /* offset to mc_len from mcontext */ -#define UC_FLAGS_OFFSET 676 /* offset to uc_flags from ucontext */ -#define MC_FLAGS_OFFSET 660 /* offset to uc_flags from ucontext */ -#define MC_BUSY_OFFSET 656 /* offset to uc_busy from ucontext */ #define MC_LEN_OFFSET 80 /* offset to mc_len from mcontext */ #define MC_FP_REGS_OFFSET 96 /* offset to FP regs from mcontext */ #define MC_FP_CW_OFFSET 96 /* offset to FP control word */ #define MC_OWNEDFP_OFFSET 88 /* offset to mc_ownedfp from mcontext */ -#define UCF_SKIPSIGMASK 0x00000001 /* Don't set/restore signal mask. */ -#define UCF_OBEYBUSY 0x00000002 /* Respect uc_busy marker. */ -#define UCF_SWAPPED 0x00000080 /* Used by swapcontext(3). */ -#define UCF_CRITICAL 0x00000200 /* In a critical section. */ -#define UCF_CLEARSTATE 0x00000400 /* Clear UCF_STATE in setcontext. */ -#define UCF_STATE 0x0000ff00 /* State-related flags. */ -#define UCF_OPTIONS 0x000000ff /* Behaviour-related flags. */ - - /* * int setcontext(ucontext_t *ucp); @@ -64,14 +52,12 @@ cmpl $0, %eax /* check for null pointer */ jne 1f movl $-1, %eax - jmp 8f + jmp 5f 1: cmpl $MC_SIZE, UC_MC_LEN_OFFSET(%eax) /* is context valid? */ je 2f movl $-1, %eax /* bzzzt, invalid context */ - jmp 8f -2: testl $UCF_SKIPSIGMASK, UC_FLAGS_OFFSET(%eax) /* Restore sigmask? */ - jnz 3f - PIC_PROLOGUE + jmp 5f +2: PIC_PROLOGUE pushl $0 /* oset = NULL */ pushl %eax /* set = &ucp->uc_sigmask */ pushl $3 /* how = SIG_SETMASK */ @@ -79,8 +65,8 @@ addl $12, %esp PIC_EPILOGUE testl %eax, %eax /* check for error */ - jnz 8f -3: movl 4(%esp), %edx /* get address of context */ + jnz 5f + movl 4(%esp), %edx /* get address of context */ addl $UC_MC_OFFSET, %edx /* add offset to mcontext */ movl 4(%edx), %gs movl 8(%edx), %fs @@ -95,25 +81,19 @@ movl 60(%edx), %eax /* put return address at top of stack */ movl %eax, (%esp) cmpl $0, MC_OWNEDFP_OFFSET(%edx) /* are FP regs valid? */ - jz 4f + jz 3f frstor MC_FP_REGS_OFFSET(%edx) /* restore FP regs */ - jmp 5f -4: fninit + jmp 4f +3: fninit fldcw MC_FP_CW_OFFSET(%edx) -5: movl 48(%edx), %eax /* restore ax, bx, cx */ +4: movl 48(%edx), %eax /* restore ax, bx, cx */ movl 36(%edx), %ebx movl 44(%edx), %ecx pushl 68(%edx) /* flags on stack */ pushl 40(%edx) /* %edx on stack */ - testl $UCF_CLEARSTATE, MC_FLAGS_OFFSET(%edx) /* clear flag state? */ - jz 6f - andl $UCF_OPTIONS, MC_FLAGS_OFFSET(%edx) -6: testl $UCF_OBEYBUSY, MC_FLAGS_OFFSET(%edx) /* set uc_busy? */ - jz 7f - movl $1, MC_BUSY_OFFSET(%edx) /* set uc_busy */ -7: popl %edx /* %edx off stack */ + popl %edx /* %edx off stack */ popf /* flags off stack */ -8: ret +5: ret /* * int getcontext(ucontext_t *ucp); @@ -129,10 +109,8 @@ cmpl $0, %eax /* check for null pointer */ jne 1f movl $-1, %eax - jmp 3f - movl 4(%esp), %eax /* get address of context and sigset */ -1: testl $UCF_SKIPSIGMASK, UC_FLAGS_OFFSET(%eax) /* Save sigmask? */ - jnz 2f + jmp 2f +1: movl 4(%esp), %eax /* get address of context and sigset */ PIC_PROLOGUE pushl %eax /* oset = &ucp->uc_sigmask */ pushl $0 /* set = NULL */ @@ -141,8 +119,8 @@ addl $12, %esp PIC_EPILOGUE testl %eax, %eax /* check for error */ - jnz 3f -2: pushl %edx /* save value of edx */ + jnz 2f + pushl %edx /* save value of edx */ movl 8(%esp), %edx /* get address of context */ addl $UC_MC_OFFSET, %edx /* add offset to mcontext */ movl %gs, 4(%edx) @@ -178,4 +156,4 @@ movl $MC_SIZE, MC_LEN_OFFSET(%edx) /* context is now valid */ movl 40(%edx), %edx /* restore edx -- is this needed? */ xorl %eax, %eax /* return 0 */ -3: ret +2: ret To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe p4-projects" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200209060700.g8670Opb085074>