From 3537df0868f37c98475405b6dea497d053ac06f7 Mon Sep 17 00:00:00 2001 From: Daniel Barlow Date: Sat, 19 Apr 2003 23:19:16 +0000 Subject: [PATCH] 0.pre8.76 SMP fix fix: whatever new-fangled C-like language the compiler on SuSE accepts is clearly a superset of the C wot I learnt at school. That or I mangled the patch while hand-applying it. --- src/runtime/x86-linux-os.c | 6 ++++-- version.lisp-expr | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/runtime/x86-linux-os.c b/src/runtime/x86-linux-os.c index b952e6a..9b46107 100644 --- a/src/runtime/x86-linux-os.c +++ b/src/runtime/x86-linux-os.c @@ -72,10 +72,11 @@ int arch_os_thread_init(struct thread *thread) { 1, 0, 0, /* index, address, length filled in later */ 1, MODIFY_LDT_CONTENTS_DATA, 0, 0, 0, 1 }; + int n; get_spinlock(&modify_ldt_lock,thread); - + n=modify_ldt(0,local_ldt_copy,sizeof local_ldt_copy); /* get next free ldt entry */ - int n=modify_ldt(0,local_ldt_copy,sizeof local_ldt_copy); + if(n) { u32 *p; for(n=0,p=local_ldt_copy;*p;p+=LDT_ENTRY_SIZE/sizeof(u32)) @@ -89,6 +90,7 @@ int arch_os_thread_init(struct thread *thread) { modify_ldt_lock=0; /* modify_ldt call failed: something magical is not happening */ return -1; + } __asm__ __volatile__ ("movw %w0, %%fs" : : "q" ((n << 3) /* selector number */ + (1 << 2) /* TI set = LDT */ diff --git a/version.lisp-expr b/version.lisp-expr index 4f508fa..073c5ef 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.pre8.74" +"0.pre8.76" -- 1.7.10.4