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