diff --git a/ia64.s b/ia64.s index ba5241daf2..3865712266 100644 --- a/ia64.s +++ b/ia64.s @@ -6,6 +6,11 @@ // void rb_ia64_flushrs(void) { __builtin_ia64_flushrs(); } // void *rb_ia64_bsp(void) { return __builtin_ia64_bsp(); } // +// Note that rb_ia64_flushrs and rb_ia64_bsp works in its own stack frame. +// It's because BSP is updated by br.call/brl.call (not alloc instruction) +// So rb_ia64_flushrs flushes stack frames including caller's one. +// rb_ia64_bsp returns the address next to caller's register stack frame. +// .file "ia64.c" .text .align 16