2 * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/dynbind.c,v 1.4 2005/09/15 18:26:51 rtoy Rel $
4 * Support for dynamic binding from C.
12 #if defined(ibmrt) || defined(i386) || defined(__x86_64)
13 #define GetBSP() ((struct binding *)SymbolValue(BINDING_STACK_POINTER))
14 #define SetBSP(value) SetSymbolValue(BINDING_STACK_POINTER, (lispobj)(value))
16 #define GetBSP() ((struct binding *)current_binding_stack_pointer)
17 #define SetBSP(value) (current_binding_stack_pointer=(lispobj *)(value))
21 bind_variable(lispobj symbol, lispobj value)
24 struct binding *binding;
26 old_value = SymbolValue(symbol);
30 binding->value = old_value;
31 binding->symbol = symbol;
32 SetSymbolValue(symbol, value);
38 struct binding *binding;
41 binding = GetBSP() - 1;
43 symbol = binding->symbol;
45 SetSymbolValue(symbol, binding->value);
53 unbind_to_here(lispobj * bsp)
55 struct binding *target = (struct binding *) bsp;
56 struct binding *binding = GetBSP();
59 while (target < binding) {
62 symbol = binding->symbol;
65 SetSymbolValue(symbol, binding->value);