Ignore:
Timestamp:
Nov 16, 2008, 10:58:10 AM (11 years ago)
Author:
gb
Message:

Using i386_set_ldt() to point %fs at the tcr on 32-bit FreeBSD doesn't work
on a 64-bit kernel. Using i386_set_fsbase does work on both 32-bit and
64-bit kernels, but doesn't allow writing to %fs: at least by the time
we've called i386_set_fsbase() on thread startup, %fs contains an appropriate
selector and it never changes throughout the life of the thread.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/x86-subprims32.s

    r11229 r11370  
    7575        __(push %ebx)
    7676        __(mov 8(%ebp), %ebx)   /* get tcr */
    77         __(movw tcr.ldt_selector(%ebx), %rcontext_reg)
     77        __ifndef([FREEBSD])
     78         __(movw tcr.ldt_selector(%ebx), %rcontext_reg)
     79        __endif
    7880        __(movl 8(%ebp),%eax)
    7981        __(cmpl rcontext(tcr.linear),%eax)
Note: See TracChangeset for help on using the changeset viewer.