69 # include <sys/time.h>
70 # include <sys/filio.h>
71 # include <sys/utsname.h>
72 # include <sys/systeminfo.h>
73 # include <sys/socket.h>
74 # include <sys/lwp.h>
75 # include <poll.h>
76 # include <sys/lwp.h>
77
78 # define _STRUCTURED_PROC 1 // this gets us the new structured proc interfaces of 5.6 & later
79 # include <sys/procfs.h> // see comment in <sys/procfs.h>
80
81 #define MAX_PATH (2 * K)
82
83 // Minimum usable stack sizes required to get to user code. Space for
84 // HotSpot guard pages is added later.
85 size_t os::Posix::_compiler_thread_min_stack_allowed = 104 * K;
86 size_t os::Posix::_java_thread_min_stack_allowed = 86 * K;
87 size_t os::Posix::_vm_internal_thread_min_stack_allowed = 128 * K;
88
89 int os::Solaris::max_register_window_saves_before_flushing() {
90 // We should detect this at run time. For now, filling
91 // in with a constant.
92 return 8;
93 }
94
95 static void handle_unflushed_register_windows(gwindows_t *win) {
96 int restore_count = win->wbcnt;
97 int i;
98
99 for(i=0; i<restore_count; i++) {
100 address sp = ((address)win->spbuf[i]) + STACK_BIAS;
101 address reg_win = (address)&win->wbuf[i];
102 memcpy(sp,reg_win,sizeof(struct rwindow));
103 }
104 }
105
106 char* os::non_memory_address_word() {
107 // Must never look like an address returned by reserve_memory,
108 // even in its subfields (as defined by the CPU immediate fields,
109 // if the CPU splits constants across multiple instructions).
110 // On SPARC, 0 != %hi(any real address), because there is no
111 // allocation in the first 1Kb of the virtual address space.
112 return (char*) 0;
113 }
114
|
69 # include <sys/time.h>
70 # include <sys/filio.h>
71 # include <sys/utsname.h>
72 # include <sys/systeminfo.h>
73 # include <sys/socket.h>
74 # include <sys/lwp.h>
75 # include <poll.h>
76 # include <sys/lwp.h>
77
78 # define _STRUCTURED_PROC 1 // this gets us the new structured proc interfaces of 5.6 & later
79 # include <sys/procfs.h> // see comment in <sys/procfs.h>
80
81 #define MAX_PATH (2 * K)
82
83 // Minimum usable stack sizes required to get to user code. Space for
84 // HotSpot guard pages is added later.
85 size_t os::Posix::_compiler_thread_min_stack_allowed = 104 * K;
86 size_t os::Posix::_java_thread_min_stack_allowed = 86 * K;
87 size_t os::Posix::_vm_internal_thread_min_stack_allowed = 128 * K;
88
89 static void handle_unflushed_register_windows(gwindows_t *win) {
90 int restore_count = win->wbcnt;
91 int i;
92
93 for(i=0; i<restore_count; i++) {
94 address sp = ((address)win->spbuf[i]) + STACK_BIAS;
95 address reg_win = (address)&win->wbuf[i];
96 memcpy(sp,reg_win,sizeof(struct rwindow));
97 }
98 }
99
100 char* os::non_memory_address_word() {
101 // Must never look like an address returned by reserve_memory,
102 // even in its subfields (as defined by the CPU immediate fields,
103 // if the CPU splits constants across multiple instructions).
104 // On SPARC, 0 != %hi(any real address), because there is no
105 // allocation in the first 1Kb of the virtual address space.
106 return (char*) 0;
107 }
108
|