On Wed, 19 Sep 2001, Peter Wemm wrote:
:
:One comment:
:
:-      cmpl    $0, PCB_USERLDT(%edx)   /* if there is one */
:+      movl    TD_PROC(%ecx), %eax     /* load struct proc from CURTHREAD */
:+      leal    P_MD(%eax), %eax        /* get mdproc from proc */
:+      cmpl    $0, MD_LDT(%eax)        /* if there is one */
:
:
:This can be written as:
:       movl    TD_PROC(%ecx), %eax
:       cmpl    $0, P_MD+MD_LDT(%eax)
:
:This is evaluated at assemble time.

Yea, Kinda dumb on my part :-/


:
:And this change:
:        movl   %eax,PCPU(CURRENTLDT)   /* store what we have */
:       jmp     2f
: 
:-1:    pushl   %edx                    /* call a non-trusting routine */
:+1:    pushl   %eax                    /* call a non-trusting routine */
:       call    set_user_ldt            /* to check and load the ldt */
:-      popl    %edx
:+      popl    %eax
: 2:
:
:is not good.. you still need to save %edx since set_user_ldt is free
:to trash it (%edx is the secondary return value from a C function).
:

Hmm interesting.  Thanks.

:eg:
:0xc02e75c4 <set_user_ldt+36>:   mov    0x10(%ebx),%edx
:0xc02e75c7 <set_user_ldt+39>:   mov    %edx,(%eax,%ecx,1)
:0xc02e75ca <set_user_ldt+42>:   mov    0x14(%ebx),%edx
:0xc02e75cd <set_user_ldt+45>:   mov    %edx,0x4(%eax,%ecx,1)
:
:The code after this in swtch.s depends on %edx being preserved.
:
:Cheers,
:-Peter
:--
:Peter Wemm - [EMAIL PROTECTED]; [EMAIL PROTECTED]; [EMAIL PROTECTED]
:"All of this is for nothing if we don't go to the stars" - JMS/B5
:
:

*-------------.................................................
| Andrew R. Reiter 
| [EMAIL PROTECTED]
| "It requires a very unusual mind
|   to undertake the analysis of the obvious" -- A.N. Whitehead


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to