Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 43 lines (42 sloc) 1.125 kb
f59bd22 @akr * configure.in: define IA64 for portability. (HP aC++/ANSI C doesn't
akr authored
1 // rb_ia64_flushrs and rb_ia64_bsp is written in IA64 assembly language
2 // because Intel Compiler for IA64 doesn't support inline assembly.
3 //
4 // This file is based on following C program compiled by gcc.
5 //
6 // void rb_ia64_flushrs(void) { __builtin_ia64_flushrs(); }
7 // void *rb_ia64_bsp(void) { return __builtin_ia64_bsp(); }
e6424f8 @nobu * removed trailing spaces.
nobu authored
8 //
146216c @akr add comment.
akr authored
9 // Note that rb_ia64_flushrs and rb_ia64_bsp works in its own stack frame.
1edeb9a @akr fix previous change.
akr authored
10 // It's because BSP is updated by br.call/brl.call (not alloc instruction).
146216c @akr add comment.
akr authored
11 // So rb_ia64_flushrs flushes stack frames including caller's one.
e6424f8 @nobu * removed trailing spaces.
nobu authored
12 // rb_ia64_bsp returns the address next to caller's register stack frame.
146216c @akr add comment.
akr authored
13 //
dd52321 @akr add reference.
akr authored
14 // See also
15 // Intel Itanium Architecture Software Developer's Manual
16 // Volume 2: System Architecture.
17 //
f59bd22 @akr * configure.in: define IA64 for portability. (HP aC++/ANSI C doesn't
akr authored
18 .file "ia64.c"
19 .text
20 .align 16
21 .global rb_ia64_flushrs#
22 .proc rb_ia64_flushrs#
23 rb_ia64_flushrs:
24 .prologue
25 .body
26 flushrs
27 ;;
28 nop.i 0
29 br.ret.sptk.many b0
30 .endp rb_ia64_flushrs#
31 .align 16
32 .global rb_ia64_bsp#
33 .proc rb_ia64_bsp#
34 rb_ia64_bsp:
35 .prologue
36 .body
37 nop.m 0
38 ;;
39 mov r8 = ar.bsp
40 br.ret.sptk.many b0
41 .endp rb_ia64_bsp#
42 .ident "GCC: (GNU) 3.3.5 (Debian 1:3.3.5-13)"
Something went wrong with that request. Please try again.