2 * Support for dynamic binding from C.
10 #if defined(ibmrt) || defined(i386) || defined(__x86_64)
11 #define GetBSP() ((struct binding *)SymbolValue(BINDING_STACK_POINTER))
12 #define SetBSP(value) SetSymbolValue(BINDING_STACK_POINTER, (lispobj)(value))
14 #define GetBSP() ((struct binding *)current_binding_stack_pointer)
15 #define SetBSP(value) (current_binding_stack_pointer=(lispobj *)(value))
19 bind_variable(lispobj symbol, lispobj value)
22 struct binding *binding;
24 old_value = SymbolValue(symbol);
28 binding->value = old_value;
29 binding->symbol = symbol;
30 SetSymbolValue(symbol, value);
36 struct binding *binding;
39 binding = GetBSP() - 1;
41 symbol = binding->symbol;
43 SetSymbolValue(symbol, binding->value);
51 unbind_to_here(lispobj * bsp)
53 struct binding *target = (struct binding *) bsp;
54 struct binding *binding = GetBSP();
57 while (target < binding) {
60 symbol = binding->symbol;
63 SetSymbolValue(symbol, binding->value);