56 // put OS-includes here
57 # include <sys/types.h>
58 # include <sys/mman.h>
59 # include <pthread.h>
60 # include <signal.h>
61 # include <errno.h>
62 # include <dlfcn.h>
63 # include <stdlib.h>
64 # include <stdio.h>
65 # include <unistd.h>
66 # include <sys/resource.h>
67 # include <pthread.h>
68 # include <sys/stat.h>
69 # include <sys/time.h>
70 # include <sys/utsname.h>
71 # include <sys/socket.h>
72 # include <sys/wait.h>
73 # include <pwd.h>
74 # include <poll.h>
75 # include <ucontext.h>
76 # include <fpu_control.h>
77
78 #ifdef AMD64
79 #define REG_SP REG_RSP
80 #define REG_PC REG_RIP
81 #define REG_FP REG_RBP
82 #define SPELL_REG_SP "rsp"
83 #define SPELL_REG_FP "rbp"
84 #else
85 #define REG_SP REG_UESP
86 #define REG_PC REG_EIP
87 #define REG_FP REG_EBP
88 #define SPELL_REG_SP "esp"
89 #define SPELL_REG_FP "ebp"
90 #endif // AMD64
91
92 address os::current_stack_pointer() {
93 #ifdef SPARC_WORKS
94 register void *esp;
95 __asm__("mov %%"SPELL_REG_SP", %0":"=r"(esp));
96 return (address) ((char*)esp + sizeof(long)*2);
|
56 // put OS-includes here
57 # include <sys/types.h>
58 # include <sys/mman.h>
59 # include <pthread.h>
60 # include <signal.h>
61 # include <errno.h>
62 # include <dlfcn.h>
63 # include <stdlib.h>
64 # include <stdio.h>
65 # include <unistd.h>
66 # include <sys/resource.h>
67 # include <pthread.h>
68 # include <sys/stat.h>
69 # include <sys/time.h>
70 # include <sys/utsname.h>
71 # include <sys/socket.h>
72 # include <sys/wait.h>
73 # include <pwd.h>
74 # include <poll.h>
75 # include <ucontext.h>
76 #ifndef AMD64
77 # include <fpu_control.h>
78 #endif
79
80 #ifdef AMD64
81 #define REG_SP REG_RSP
82 #define REG_PC REG_RIP
83 #define REG_FP REG_RBP
84 #define SPELL_REG_SP "rsp"
85 #define SPELL_REG_FP "rbp"
86 #else
87 #define REG_SP REG_UESP
88 #define REG_PC REG_EIP
89 #define REG_FP REG_EBP
90 #define SPELL_REG_SP "esp"
91 #define SPELL_REG_FP "ebp"
92 #endif // AMD64
93
94 address os::current_stack_pointer() {
95 #ifdef SPARC_WORKS
96 register void *esp;
97 __asm__("mov %%"SPELL_REG_SP", %0":"=r"(esp));
98 return (address) ((char*)esp + sizeof(long)*2);
|