Changeset 309 for trunk/openjdk/hotspot/src/os_cpu
- Timestamp:
- Feb 13, 2012, 10:07:12 PM (14 years ago)
- Location:
- trunk/openjdk
- Files:
-
- 95 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/openjdk
- Property svn:mergeinfo changed
/branches/vendor/oracle/openjdk6/b24 (added) merged: 308 /branches/vendor/oracle/openjdk6/current merged: 307
- Property svn:mergeinfo changed
-
trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_assembler_linux_sparc.cpp.incl" 25 #include "precompiled.hpp" 26 #include "asm/assembler.hpp" 27 #include "assembler_sparc.inline.hpp" 28 #include "runtime/os.hpp" 29 #include "runtime/threadLocalStorage.hpp" 27 30 28 31 #include <asm-sparc/traps.h> -
trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/atomic_linux_sparc.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_LINUX_SPARC_VM_ATOMIC_LINUX_SPARC_INLINE_HPP 26 #define OS_CPU_LINUX_SPARC_VM_ATOMIC_LINUX_SPARC_INLINE_HPP 27 28 #include "orderAccess_linux_sparc.inline.hpp" 29 #include "runtime/atomic.hpp" 30 #include "runtime/os.hpp" 31 #include "vm_version_sparc.hpp" 24 32 25 33 // Implementation of class atomic … … 46 54 inline void Atomic::dec_ptr(volatile intptr_t* dest) { (void)add_ptr(-1, dest); } 47 55 inline void Atomic::dec_ptr(volatile void* dest) { (void)add_ptr(-1, dest); } 56 57 inline jlong Atomic::load(volatile jlong* src) { return *src; } 48 58 49 59 inline jint Atomic::add (jint add_value, volatile jint* dest) { … … 205 215 return (void*)cmpxchg_ptr((intptr_t)exchange_value, (volatile intptr_t*)dest, (intptr_t)compare_value); 206 216 } 217 218 #endif // OS_CPU_LINUX_SPARC_VM_ATOMIC_LINUX_SPARC_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2000, 20 09, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_LINUX_SPARC_VM_GLOBALS_LINUX_SPARC_HPP 26 #define OS_CPU_LINUX_SPARC_VM_GLOBALS_LINUX_SPARC_HPP 27 25 28 // 26 29 // Sets the default values for platform dependent flags used by the … … 35 38 // Only used on 64 bit Windows platforms 36 39 define_pd_global(bool, UseVectoredExceptions, false); 40 41 #endif // OS_CPU_LINUX_SPARC_VM_GLOBALS_LINUX_SPARC_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/orderAccess_linux_sparc.inline.hpp
r278 r309 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_LINUX_SPARC_VM_ORDERACCESS_LINUX_SPARC_INLINE_HPP 26 #define OS_CPU_LINUX_SPARC_VM_ORDERACCESS_LINUX_SPARC_INLINE_HPP 27 28 #include "runtime/orderAccess.hpp" 29 #include "vm_version_sparc.hpp" 24 30 25 31 // Implementation of class OrderAccess. … … 101 107 inline void OrderAccess::release_store_ptr_fence(volatile intptr_t* p, intptr_t v) { *p = v; fence(); } 102 108 inline void OrderAccess::release_store_ptr_fence(volatile void* p, void* v) { *(void* volatile *)p = v; fence(); } 109 110 #endif // OS_CPU_LINUX_SPARC_VM_ORDERACCESS_LINUX_SPARC_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 // do not include precompiled header file 26 27 #include "incls/_os_linux_sparc.cpp.incl" 25 // no precompiled headers 26 #include "assembler_sparc.inline.hpp" 27 #include "classfile/classLoader.hpp" 28 #include "classfile/systemDictionary.hpp" 29 #include "classfile/vmSymbols.hpp" 30 #include "code/icBuffer.hpp" 31 #include "code/vtableStubs.hpp" 32 #include "interpreter/interpreter.hpp" 33 #include "jvm_linux.h" 34 #include "memory/allocation.inline.hpp" 35 #include "mutex_linux.inline.hpp" 36 #include "nativeInst_sparc.hpp" 37 #include "os_share_linux.hpp" 38 #include "prims/jniFastGetField.hpp" 39 #include "prims/jvm.h" 40 #include "prims/jvm_misc.hpp" 41 #include "runtime/arguments.hpp" 42 #include "runtime/extendedPC.hpp" 43 #include "runtime/frame.inline.hpp" 44 #include "runtime/interfaceSupport.hpp" 45 #include "runtime/java.hpp" 46 #include "runtime/javaCalls.hpp" 47 #include "runtime/mutexLocker.hpp" 48 #include "runtime/osThread.hpp" 49 #include "runtime/sharedRuntime.hpp" 50 #include "runtime/stubRoutines.hpp" 51 #include "runtime/timer.hpp" 52 #include "thread_linux.inline.hpp" 53 #include "utilities/events.hpp" 54 #include "utilities/vmError.hpp" 55 #ifdef COMPILER1 56 #include "c1/c1_Runtime1.hpp" 57 #endif 58 #ifdef COMPILER2 59 #include "opto/runtime.hpp" 60 #endif 61 28 62 29 63 // Linux/Sparc has rather obscure naming of registers in sigcontext … … 201 235 st->print_cr("Registers:"); 202 236 237 st->print_cr(" G1=" INTPTR_FORMAT " G2=" INTPTR_FORMAT 238 " G3=" INTPTR_FORMAT " G4=" INTPTR_FORMAT, 239 SIG_REGS(sc).u_regs[CON_G1], 240 SIG_REGS(sc).u_regs[CON_G2], 241 SIG_REGS(sc).u_regs[CON_G3], 242 SIG_REGS(sc).u_regs[CON_G4]); 243 st->print_cr(" G5=" INTPTR_FORMAT " G6=" INTPTR_FORMAT 244 " G7=" INTPTR_FORMAT " Y=" INTPTR_FORMAT, 245 SIG_REGS(sc).u_regs[CON_G5], 246 SIG_REGS(sc).u_regs[CON_G6], 247 SIG_REGS(sc).u_regs[CON_G7], 248 SIG_REGS(sc).y); 203 249 st->print_cr(" O0=" INTPTR_FORMAT " O1=" INTPTR_FORMAT 204 250 " O2=" INTPTR_FORMAT " O3=" INTPTR_FORMAT, … … 214 260 SIG_REGS(sc).u_regs[CON_O7]); 215 261 216 st->print_cr(" G1=" INTPTR_FORMAT " G2=" INTPTR_FORMAT 217 " G3=" INTPTR_FORMAT " G4=" INTPTR_FORMAT, 218 SIG_REGS(sc).u_regs[CON_G1], 219 SIG_REGS(sc).u_regs[CON_G2], 220 SIG_REGS(sc).u_regs[CON_G3], 221 SIG_REGS(sc).u_regs[CON_G4]); 222 st->print_cr(" G5=" INTPTR_FORMAT " G6=" INTPTR_FORMAT 223 " G7=" INTPTR_FORMAT " Y=" INTPTR_FORMAT, 224 SIG_REGS(sc).u_regs[CON_G5], 225 SIG_REGS(sc).u_regs[CON_G6], 226 SIG_REGS(sc).u_regs[CON_G7], 227 SIG_REGS(sc).y); 262 263 intptr_t *sp = (intptr_t *)os::Linux::ucontext_get_sp(uc); 264 st->print_cr(" L0=" INTPTR_FORMAT " L1=" INTPTR_FORMAT 265 " L2=" INTPTR_FORMAT " L3=" INTPTR_FORMAT, 266 sp[L0->sp_offset_in_saved_window()], 267 sp[L1->sp_offset_in_saved_window()], 268 sp[L2->sp_offset_in_saved_window()], 269 sp[L3->sp_offset_in_saved_window()]); 270 st->print_cr(" L4=" INTPTR_FORMAT " L5=" INTPTR_FORMAT 271 " L6=" INTPTR_FORMAT " L7=" INTPTR_FORMAT, 272 sp[L4->sp_offset_in_saved_window()], 273 sp[L5->sp_offset_in_saved_window()], 274 sp[L6->sp_offset_in_saved_window()], 275 sp[L7->sp_offset_in_saved_window()]); 276 st->print_cr(" I0=" INTPTR_FORMAT " I1=" INTPTR_FORMAT 277 " I2=" INTPTR_FORMAT " I3=" INTPTR_FORMAT, 278 sp[I0->sp_offset_in_saved_window()], 279 sp[I1->sp_offset_in_saved_window()], 280 sp[I2->sp_offset_in_saved_window()], 281 sp[I3->sp_offset_in_saved_window()]); 282 st->print_cr(" I4=" INTPTR_FORMAT " I5=" INTPTR_FORMAT 283 " I6=" INTPTR_FORMAT " I7=" INTPTR_FORMAT, 284 sp[I4->sp_offset_in_saved_window()], 285 sp[I5->sp_offset_in_saved_window()], 286 sp[I6->sp_offset_in_saved_window()], 287 sp[I7->sp_offset_in_saved_window()]); 228 288 229 289 st->print_cr(" PC=" INTPTR_FORMAT " nPC=" INTPTR_FORMAT, … … 233 293 st->cr(); 234 294 235 intptr_t *sp = (intptr_t *)os::Linux::ucontext_get_sp(uc);236 295 st->print_cr("Top of Stack: (sp=" PTR_FORMAT ")", sp); 237 296 print_hex_dump(st, (address)sp, (address)(sp + 32), sizeof(intptr_t)); … … 243 302 address pc = os::Linux::ucontext_get_pc(uc); 244 303 st->print_cr("Instructions: (pc=" PTR_FORMAT ")", pc); 245 print_hex_dump(st, pc - 16, pc + 16, sizeof(char)); 304 print_hex_dump(st, pc - 32, pc + 32, sizeof(char)); 305 } 306 307 308 void os::print_register_info(outputStream *st, void *context) { 309 if (context == NULL) return; 310 311 ucontext_t *uc = (ucontext_t*)context; 312 intptr_t *sp = (intptr_t *)os::Linux::ucontext_get_sp(uc); 313 314 st->print_cr("Register to memory mapping:"); 315 st->cr(); 316 317 // this is only for the "general purpose" registers 318 st->print("G1="); print_location(st, SIG_REGS(sc).u_regs[CON__G1]); 319 st->print("G2="); print_location(st, SIG_REGS(sc).u_regs[CON__G2]); 320 st->print("G3="); print_location(st, SIG_REGS(sc).u_regs[CON__G3]); 321 st->print("G4="); print_location(st, SIG_REGS(sc).u_regs[CON__G4]); 322 st->print("G5="); print_location(st, SIG_REGS(sc).u_regs[CON__G5]); 323 st->print("G6="); print_location(st, SIG_REGS(sc).u_regs[CON__G6]); 324 st->print("G7="); print_location(st, SIG_REGS(sc).u_regs[CON__G7]); 325 st->cr(); 326 327 st->print("O0="); print_location(st, SIG_REGS(sc).u_regs[CON__O0]); 328 st->print("O1="); print_location(st, SIG_REGS(sc).u_regs[CON__O1]); 329 st->print("O2="); print_location(st, SIG_REGS(sc).u_regs[CON__O2]); 330 st->print("O3="); print_location(st, SIG_REGS(sc).u_regs[CON__O3]); 331 st->print("O4="); print_location(st, SIG_REGS(sc).u_regs[CON__O4]); 332 st->print("O5="); print_location(st, SIG_REGS(sc).u_regs[CON__O5]); 333 st->print("O6="); print_location(st, SIG_REGS(sc).u_regs[CON__O6]); 334 st->print("O7="); print_location(st, SIG_REGS(sc).u_regs[CON__O7]); 335 st->cr(); 336 337 st->print("L0="); print_location(st, sp[L0->sp_offset_in_saved_window()]); 338 st->print("L1="); print_location(st, sp[L1->sp_offset_in_saved_window()]); 339 st->print("L2="); print_location(st, sp[L2->sp_offset_in_saved_window()]); 340 st->print("L3="); print_location(st, sp[L3->sp_offset_in_saved_window()]); 341 st->print("L4="); print_location(st, sp[L4->sp_offset_in_saved_window()]); 342 st->print("L5="); print_location(st, sp[L5->sp_offset_in_saved_window()]); 343 st->print("L6="); print_location(st, sp[L6->sp_offset_in_saved_window()]); 344 st->print("L7="); print_location(st, sp[L7->sp_offset_in_saved_window()]); 345 st->cr(); 346 347 st->print("I0="); print_location(st, sp[I0->sp_offset_in_saved_window()]); 348 st->print("I1="); print_location(st, sp[I1->sp_offset_in_saved_window()]); 349 st->print("I2="); print_location(st, sp[I2->sp_offset_in_saved_window()]); 350 st->print("I3="); print_location(st, sp[I3->sp_offset_in_saved_window()]); 351 st->print("I4="); print_location(st, sp[I4->sp_offset_in_saved_window()]); 352 st->print("I5="); print_location(st, sp[I5->sp_offset_in_saved_window()]); 353 st->print("I6="); print_location(st, sp[I6->sp_offset_in_saved_window()]); 354 st->print("I7="); print_location(st, sp[I7->sp_offset_in_saved_window()]); 355 st->cr(); 246 356 } 247 357 -
trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 09, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_LINUX_SPARC_VM_OS_LINUX_SPARC_HPP 26 #define OS_CPU_LINUX_SPARC_VM_OS_LINUX_SPARC_HPP 27 25 28 // 26 29 // NOTE: we are back in class os here, not Linux … … 43 46 // Note: Currently only used in 64 bit Windows implementations 44 47 static bool register_code_area(char *low, char *high) { return true; } 48 49 #endif // OS_CPU_LINUX_SPARC_VM_OS_LINUX_SPARC_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/prefetch_linux_sparc.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_LINUX_SPARC_VM_PREFETCH_LINUX_SPARC_INLINE_HPP 26 #define OS_CPU_LINUX_SPARC_VM_PREFETCH_LINUX_SPARC_INLINE_HPP 27 28 #include "runtime/prefetch.hpp" 29 25 30 #if defined(COMPILER2) || defined(_LP64) 26 31 … … 39 44 40 45 #endif 46 47 #endif // OS_CPU_LINUX_SPARC_VM_PREFETCH_LINUX_SPARC_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1998, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_threadLS_linux_sparc.cpp.incl" 25 #include "precompiled.hpp" 26 #include "runtime/threadLocalStorage.hpp" 27 #include "thread_linux.inline.hpp" 27 28 28 29 void ThreadLocalStorage::generate_code_for_get_thread() { -
trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1998, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_LINUX_SPARC_VM_THREADLS_LINUX_SPARC_HPP 26 #define OS_CPU_LINUX_SPARC_VM_THREADLS_LINUX_SPARC_HPP 27 25 28 public: 26 29 static Thread* thread() { 27 30 return (Thread*) os::thread_local_storage_at(thread_index()); 28 31 } 32 33 #endif // OS_CPU_LINUX_SPARC_VM_THREADLS_LINUX_SPARC_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/thread_linux_sparc.cpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_thread_linux_sparc.cpp.incl" 25 #include "precompiled.hpp" 26 #include "runtime/frame.inline.hpp" 27 #include "thread_linux.inline.hpp" 27 28 28 29 // For Forte Analyzer AsyncGetCallTrace profiling support - thread is -
trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/thread_linux_sparc.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1998, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_LINUX_SPARC_VM_THREAD_LINUX_SPARC_HPP 26 #define OS_CPU_LINUX_SPARC_VM_THREAD_LINUX_SPARC_HPP 24 27 25 28 private: … … 97 100 static void enable_register_stack_guard() {} 98 101 static void disable_register_stack_guard() {} 102 103 #endif // OS_CPU_LINUX_SPARC_VM_THREAD_LINUX_SPARC_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/vmStructs_linux_sparc.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2000, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_LINUX_SPARC_VM_VMSTRUCTS_LINUX_SPARC_HPP 26 #define OS_CPU_LINUX_SPARC_VM_VMSTRUCTS_LINUX_SPARC_HPP 24 27 25 28 // These are the OS and CPU-specific fields, types and integer … … 68 71 /* This must be the last entry, and must be present */ \ 69 72 last_entry() 73 74 #endif // OS_CPU_LINUX_SPARC_VM_VMSTRUCTS_LINUX_SPARC_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/vm_version_linux_sparc.cpp
r278 r309 1 1 /* 2 * Copyright (c) 2006, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 # include "incls/_precompiled.incl" 26 # include "incls/_vm_version_linux_sparc.cpp.incl" 25 #include "precompiled.hpp" 26 #include "runtime/os.hpp" 27 #include "vm_version_sparc.hpp" 27 28 28 29 static bool detect_niagara() { -
trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/assembler_linux_x86.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_assembler_linux_x86.cpp.incl" 25 #include "precompiled.hpp" 26 #include "asm/assembler.hpp" 27 #include "assembler_x86.inline.hpp" 28 #include "runtime/os.hpp" 29 #include "runtime/threadLocalStorage.hpp" 27 30 28 31 #ifndef _LP64 -
trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/atomic_linux_x86.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 05, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_LINUX_X86_VM_ATOMIC_LINUX_X86_INLINE_HPP 26 #define OS_CPU_LINUX_X86_VM_ATOMIC_LINUX_X86_INLINE_HPP 27 28 #include "orderAccess_linux_x86.inline.hpp" 29 #include "runtime/atomic.hpp" 30 #include "runtime/os.hpp" 31 #include "vm_version_x86.hpp" 32 25 33 // Implementation of class atomic 26 34 … … 93 101 } 94 102 95 extern "C" {96 // defined in linux_x86.s97 jlong _Atomic_cmpxchg_long(jlong, volatile jlong*, jlong, bool);98 }99 100 103 #ifdef AMD64 101 104 inline void Atomic::store (jlong store_value, jlong* dest) { *dest = store_value; } … … 157 160 } 158 161 159 #else 160 //inline void Atomic::store (jlong store_value, jlong* dest) { *dest = store_value; } 161 //inline void Atomic::store (jlong store_value, volatile jlong* dest) { *dest = store_value; } 162 inline jlong Atomic::load(volatile jlong* src) { return *src; } 163 164 #else // !AMD64 162 165 163 166 inline intptr_t Atomic::add_ptr(intptr_t add_value, volatile intptr_t* dest) { … … 182 185 } 183 186 187 extern "C" { 188 // defined in linux_x86.s 189 jlong _Atomic_cmpxchg_long(jlong, volatile jlong*, jlong, bool); 190 void _Atomic_move_long(volatile jlong* src, volatile jlong* dst); 191 } 192 184 193 inline jlong Atomic::cmpxchg (jlong exchange_value, volatile jlong* dest, jlong compare_value) { 185 194 return _Atomic_cmpxchg_long(exchange_value, dest, compare_value, os::is_MP()); … … 193 202 return (void*)cmpxchg((jint)exchange_value, (volatile jint*)dest, (jint)compare_value); 194 203 } 204 205 inline jlong Atomic::load(volatile jlong* src) { 206 volatile jlong dest; 207 _Atomic_move_long(src, &dest); 208 return dest; 209 } 210 211 inline void Atomic::store(jlong store_value, jlong* dest) { 212 _Atomic_move_long((volatile jlong*)&store_value, (volatile jlong*)dest); 213 } 214 215 inline void Atomic::store(jlong store_value, volatile jlong* dest) { 216 _Atomic_move_long((volatile jlong*)&store_value, dest); 217 } 218 195 219 #endif // AMD64 220 221 #endif // OS_CPU_LINUX_X86_VM_ATOMIC_LINUX_X86_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/bytes_linux_x86.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_LINUX_X86_VM_BYTES_LINUX_X86_INLINE_HPP 26 #define OS_CPU_LINUX_X86_VM_BYTES_LINUX_X86_INLINE_HPP 24 27 25 28 #ifdef __EMX__ … … 91 94 } 92 95 #endif // !AMD64 96 97 #endif // OS_CPU_LINUX_X86_VM_BYTES_LINUX_X86_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/copy_linux_x86.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 20 04, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_LINUX_X86_VM_COPY_LINUX_X86_INLINE_HPP 26 #define OS_CPU_LINUX_X86_VM_COPY_LINUX_X86_INLINE_HPP 24 27 25 28 static void pd_conjoint_words(HeapWord* from, HeapWord* to, size_t count) { … … 303 306 #endif // AMD64 304 307 } 308 309 #endif // OS_CPU_LINUX_X86_VM_COPY_LINUX_X86_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/globals_linux_x86.hpp
r278 r309 23 23 */ 24 24 25 #ifndef OS_CPU_LINUX_X86_VM_GLOBALS_LINUX_X86_HPP 26 #define OS_CPU_LINUX_X86_VM_GLOBALS_LINUX_X86_HPP 27 25 28 // Sets the default values for platform dependent flags used by the runtime system. 26 29 // (see globals.hpp) … … 46 49 // Only used on 64 bit Windows platforms 47 50 define_pd_global(bool, UseVectoredExceptions, false); 51 52 #endif // OS_CPU_LINUX_X86_VM_GLOBALS_LINUX_X86_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.s
r278 r309 1 1 # 2 # Copyright (c) 2004, 20 07, Oracle and/or its affiliates. All rights reserved.2 # Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. 3 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 # … … 39 39 40 40 .globl _Atomic_cmpxchg_long 41 .globl _Atomic_move_long 41 42 42 43 .text … … 654 655 ret 655 656 657 658 # Support for jlong Atomic::load and Atomic::store. 659 # void _Atomic_move_long(volatile jlong* src, volatile jlong* dst) 660 .p2align 4,,15 661 .type _Atomic_move_long,@function 662 _Atomic_move_long: 663 movl 4(%esp), %eax # src 664 fildll (%eax) 665 movl 8(%esp), %eax # dest 666 fistpll (%eax) 667 ret 668 -
trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 201 0, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_LINUX_X86_VM_ORDERACCESS_LINUX_X86_INLINE_HPP 26 #define OS_CPU_LINUX_X86_VM_ORDERACCESS_LINUX_X86_INLINE_HPP 27 28 #include "runtime/atomic.hpp" 29 #include "runtime/orderAccess.hpp" 30 #include "vm_version_x86.hpp" 31 25 32 // Implementation of class OrderAccess. 26 33 … … 59 66 inline jshort OrderAccess::load_acquire(volatile jshort* p) { return *p; } 60 67 inline jint OrderAccess::load_acquire(volatile jint* p) { return *p; } 61 inline jlong OrderAccess::load_acquire(volatile jlong* p) { return *p; }68 inline jlong OrderAccess::load_acquire(volatile jlong* p) { return Atomic::load(p); } 62 69 inline jubyte OrderAccess::load_acquire(volatile jubyte* p) { return *p; } 63 70 inline jushort OrderAccess::load_acquire(volatile jushort* p) { return *p; } 64 71 inline juint OrderAccess::load_acquire(volatile juint* p) { return *p; } 65 inline julong OrderAccess::load_acquire(volatile julong* p) { return *p; }72 inline julong OrderAccess::load_acquire(volatile julong* p) { return Atomic::load((volatile jlong*)p); } 66 73 inline jfloat OrderAccess::load_acquire(volatile jfloat* p) { return *p; } 67 74 inline jdouble OrderAccess::load_acquire(volatile jdouble* p) { return *p; } … … 74 81 inline void OrderAccess::release_store(volatile jshort* p, jshort v) { *p = v; } 75 82 inline void OrderAccess::release_store(volatile jint* p, jint v) { *p = v; } 76 inline void OrderAccess::release_store(volatile jlong* p, jlong v) { *p = v; }83 inline void OrderAccess::release_store(volatile jlong* p, jlong v) { Atomic::store(v, p); } 77 84 inline void OrderAccess::release_store(volatile jubyte* p, jubyte v) { *p = v; } 78 85 inline void OrderAccess::release_store(volatile jushort* p, jushort v) { *p = v; } 79 86 inline void OrderAccess::release_store(volatile juint* p, juint v) { *p = v; } 80 inline void OrderAccess::release_store(volatile julong* p, julong v) { *p = v; }87 inline void OrderAccess::release_store(volatile julong* p, julong v) { Atomic::store((jlong)v, (volatile jlong*)p); } 81 88 inline void OrderAccess::release_store(volatile jfloat* p, jfloat v) { *p = v; } 82 89 inline void OrderAccess::release_store(volatile jdouble* p, jdouble v) { *p = v; } … … 173 180 : "memory"); 174 181 #else 175 *p = v; fence();182 release_store(p, v); fence(); 176 183 #endif // AMD64 177 184 } … … 205 212 #endif // AMD64 206 213 } 214 215 #endif // OS_CPU_LINUX_X86_VM_ORDERACCESS_LINUX_X86_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 09, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 // do not include precompiled header file 26 # include "incls/_os_linux_x86.cpp.incl" 25 // no precompiled headers 26 #include "assembler_x86.inline.hpp" 27 #include "classfile/classLoader.hpp" 28 #include "classfile/systemDictionary.hpp" 29 #include "classfile/vmSymbols.hpp" 30 #include "code/icBuffer.hpp" 31 #include "code/vtableStubs.hpp" 32 #include "interpreter/interpreter.hpp" 33 #include "jvm_linux.h" 34 #include "memory/allocation.inline.hpp" 35 #include "mutex_linux.inline.hpp" 36 #include "nativeInst_x86.hpp" 37 #include "os_share_linux.hpp" 38 #include "prims/jniFastGetField.hpp" 39 #include "prims/jvm.h" 40 #include "prims/jvm_misc.hpp" 41 #include "runtime/arguments.hpp" 42 #include "runtime/extendedPC.hpp" 43 #include "runtime/frame.inline.hpp" 44 #include "runtime/interfaceSupport.hpp" 45 #include "runtime/java.hpp" 46 #include "runtime/javaCalls.hpp" 47 #include "runtime/mutexLocker.hpp" 48 #include "runtime/osThread.hpp" 49 #include "runtime/sharedRuntime.hpp" 50 #include "runtime/stubRoutines.hpp" 51 #include "runtime/timer.hpp" 52 #include "thread_linux.inline.hpp" 53 #include "utilities/events.hpp" 54 #include "utilities/vmError.hpp" 55 #ifdef COMPILER1 56 #include "c1/c1_Runtime1.hpp" 57 #endif 58 #ifdef COMPILER2 59 #include "opto/runtime.hpp" 60 #endif 27 61 28 62 // put OS-includes here … … 719 753 ucontext_t *uc = (ucontext_t*)context; 720 754 st->print_cr("Registers:"); 721 722 // this is horrendously verbose but the layout of the registers in the723 // context does not match how we defined our abstract Register set, so724 // we can't just iterate through the gregs area725 726 755 #ifdef AMD64 727 756 st->print( "RAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RAX]); … … 746 775 st->cr(); 747 776 st->print( "RIP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RIP]); 748 st->print(", EFL =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EFL]);777 st->print(", EFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EFL]); 749 778 st->print(", CSGSFS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_CSGSFS]); 750 779 st->print(", ERR=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_ERR]); 751 780 st->cr(); 752 781 st->print(" TRAPNO=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_TRAPNO]); 753 754 st->cr();755 st->cr();756 757 st->print_cr("Register to memory mapping:");758 st->cr();759 760 // this is only for the "general purpose" registers761 762 st->print_cr("RAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RAX]);763 print_location(st, uc->uc_mcontext.gregs[REG_RAX]);764 st->cr();765 st->print_cr("RBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBX]);766 print_location(st, uc->uc_mcontext.gregs[REG_RBX]);767 st->cr();768 st->print_cr("RCX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RCX]);769 print_location(st, uc->uc_mcontext.gregs[REG_RCX]);770 st->cr();771 st->print_cr("RDX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RDX]);772 print_location(st, uc->uc_mcontext.gregs[REG_RDX]);773 st->cr();774 st->print_cr("RSP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RSP]);775 print_location(st, uc->uc_mcontext.gregs[REG_RSP]);776 st->cr();777 st->print_cr("RBP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBP]);778 print_location(st, uc->uc_mcontext.gregs[REG_RBP]);779 st->cr();780 st->print_cr("RSI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RSI]);781 print_location(st, uc->uc_mcontext.gregs[REG_RSI]);782 st->cr();783 st->print_cr("RDI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RDI]);784 print_location(st, uc->uc_mcontext.gregs[REG_RDI]);785 st->cr();786 st->print_cr("R8 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R8]);787 print_location(st, uc->uc_mcontext.gregs[REG_R8]);788 st->cr();789 st->print_cr("R9 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R9]);790 print_location(st, uc->uc_mcontext.gregs[REG_R9]);791 st->cr();792 st->print_cr("R10=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R10]);793 print_location(st, uc->uc_mcontext.gregs[REG_R10]);794 st->cr();795 st->print_cr("R11=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R11]);796 print_location(st, uc->uc_mcontext.gregs[REG_R11]);797 st->cr();798 st->print_cr("R12=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R12]);799 print_location(st, uc->uc_mcontext.gregs[REG_R12]);800 st->cr();801 st->print_cr("R13=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R13]);802 print_location(st, uc->uc_mcontext.gregs[REG_R13]);803 st->cr();804 st->print_cr("R14=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R14]);805 print_location(st, uc->uc_mcontext.gregs[REG_R14]);806 st->cr();807 st->print_cr("R15=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R15]);808 print_location(st, uc->uc_mcontext.gregs[REG_R15]);809 810 782 #else 811 783 st->print( "EAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EAX]); … … 820 792 st->cr(); 821 793 st->print( "EIP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EIP]); 794 st->print(", EFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EFL]); 822 795 st->print(", CR2=" INTPTR_FORMAT, uc->uc_mcontext.cr2); 823 st->print(", EFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EFL]);824 825 st->cr();826 st->cr();827 828 st->print_cr("Register to memory mapping:");829 st->cr();830 831 // this is only for the "general purpose" registers832 833 st->print_cr("EAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EAX]);834 print_location(st, uc->uc_mcontext.gregs[REG_EAX]);835 st->cr();836 st->print_cr("EBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EBX]);837 print_location(st, uc->uc_mcontext.gregs[REG_EBX]);838 st->cr();839 st->print_cr("ECX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_ECX]);840 print_location(st, uc->uc_mcontext.gregs[REG_ECX]);841 st->cr();842 st->print_cr("EDX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EDX]);843 print_location(st, uc->uc_mcontext.gregs[REG_EDX]);844 st->cr();845 st->print_cr("ESP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_ESP]);846 print_location(st, uc->uc_mcontext.gregs[REG_ESP]);847 st->cr();848 st->print_cr("EBP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EBP]);849 print_location(st, uc->uc_mcontext.gregs[REG_EBP]);850 st->cr();851 st->print_cr("ESI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_ESI]);852 print_location(st, uc->uc_mcontext.gregs[REG_ESI]);853 st->cr();854 st->print_cr("EDI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EDI]);855 print_location(st, uc->uc_mcontext.gregs[REG_EDI]);856 857 796 #endif // AMD64 858 797 st->cr(); … … 869 808 address pc = os::Linux::ucontext_get_pc(uc); 870 809 st->print_cr("Instructions: (pc=" PTR_FORMAT ")", pc); 871 print_hex_dump(st, pc - 16, pc + 16, sizeof(char)); 810 print_hex_dump(st, pc - 32, pc + 32, sizeof(char)); 811 } 812 813 void os::print_register_info(outputStream *st, void *context) { 814 if (context == NULL) return; 815 816 ucontext_t *uc = (ucontext_t*)context; 817 818 st->print_cr("Register to memory mapping:"); 819 st->cr(); 820 821 // this is horrendously verbose but the layout of the registers in the 822 // context does not match how we defined our abstract Register set, so 823 // we can't just iterate through the gregs area 824 825 // this is only for the "general purpose" registers 826 827 #ifdef AMD64 828 st->print("RAX="); print_location(st, uc->uc_mcontext.gregs[REG_RAX]); 829 st->print("RBX="); print_location(st, uc->uc_mcontext.gregs[REG_RBX]); 830 st->print("RCX="); print_location(st, uc->uc_mcontext.gregs[REG_RCX]); 831 st->print("RDX="); print_location(st, uc->uc_mcontext.gregs[REG_RDX]); 832 st->print("RSP="); print_location(st, uc->uc_mcontext.gregs[REG_RSP]); 833 st->print("RBP="); print_location(st, uc->uc_mcontext.gregs[REG_RBP]); 834 st->print("RSI="); print_location(st, uc->uc_mcontext.gregs[REG_RSI]); 835 st->print("RDI="); print_location(st, uc->uc_mcontext.gregs[REG_RDI]); 836 st->print("R8 ="); print_location(st, uc->uc_mcontext.gregs[REG_R8]); 837 st->print("R9 ="); print_location(st, uc->uc_mcontext.gregs[REG_R9]); 838 st->print("R10="); print_location(st, uc->uc_mcontext.gregs[REG_R10]); 839 st->print("R11="); print_location(st, uc->uc_mcontext.gregs[REG_R11]); 840 st->print("R12="); print_location(st, uc->uc_mcontext.gregs[REG_R12]); 841 st->print("R13="); print_location(st, uc->uc_mcontext.gregs[REG_R13]); 842 st->print("R14="); print_location(st, uc->uc_mcontext.gregs[REG_R14]); 843 st->print("R15="); print_location(st, uc->uc_mcontext.gregs[REG_R15]); 844 #else 845 st->print("EAX="); print_location(st, uc->uc_mcontext.gregs[REG_EAX]); 846 st->print("EBX="); print_location(st, uc->uc_mcontext.gregs[REG_EBX]); 847 st->print("ECX="); print_location(st, uc->uc_mcontext.gregs[REG_ECX]); 848 st->print("EDX="); print_location(st, uc->uc_mcontext.gregs[REG_EDX]); 849 st->print("ESP="); print_location(st, uc->uc_mcontext.gregs[REG_ESP]); 850 st->print("EBP="); print_location(st, uc->uc_mcontext.gregs[REG_EBP]); 851 st->print("ESI="); print_location(st, uc->uc_mcontext.gregs[REG_ESI]); 852 st->print("EDI="); print_location(st, uc->uc_mcontext.gregs[REG_EDI]); 853 #endif // AMD64 854 855 st->cr(); 872 856 } 873 857 -
trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 04, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_LINUX_X86_VM_OS_LINUX_X86_HPP 26 #define OS_CPU_LINUX_X86_VM_OS_LINUX_X86_HPP 27 25 28 static void setup_fpu(); 26 29 static bool supports_sse(); … … 31 34 // Note: Currently only used in 64 bit Windows implementations 32 35 static bool register_code_area(char *low, char *high) { return true; } 36 37 #endif // OS_CPU_LINUX_X86_VM_OS_LINUX_X86_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/prefetch_linux_x86.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_LINUX_X86_VM_PREFETCH_LINUX_X86_INLINE_HPP 26 #define OS_CPU_LINUX_X86_VM_PREFETCH_LINUX_X86_INLINE_HPP 27 28 #include "runtime/prefetch.hpp" 29 25 30 26 31 inline void Prefetch::read (void *loc, intx interval) { … … 39 44 #endif // AMD64 40 45 } 46 47 #endif // OS_CPU_LINUX_X86_VM_PREFETCH_LINUX_X86_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/threadLS_linux_x86.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 03, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_threadLS_linux_x86.cpp.incl" 25 #include "precompiled.hpp" 26 #include "runtime/threadLocalStorage.hpp" 27 #include "thread_linux.inline.hpp" 27 28 28 29 // Map stack pointer (%esp) to thread pointer for faster TLS access -
trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 03, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_LINUX_X86_VM_THREADLS_LINUX_X86_HPP 26 #define OS_CPU_LINUX_X86_VM_THREADLS_LINUX_X86_HPP 24 27 25 28 // Processor dependent parts of ThreadLocalStorage … … 48 51 #endif // AMD64 49 52 } 53 54 #endif // OS_CPU_LINUX_X86_VM_THREADLS_LINUX_X86_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/thread_linux_x86.cpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 20 05, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_thread_linux_x86.cpp.incl" 25 #include "precompiled.hpp" 26 #include "runtime/frame.inline.hpp" 27 #include "thread_linux.inline.hpp" 27 28 28 29 // For Forte Analyzer AsyncGetCallTrace profiling support - thread is -
trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/thread_linux_x86.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2000, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_LINUX_X86_VM_THREAD_LINUX_X86_HPP 26 #define OS_CPU_LINUX_X86_VM_THREAD_LINUX_X86_HPP 24 27 25 28 private: … … 64 67 static void enable_register_stack_guard() {} 65 68 static void disable_register_stack_guard() {} 69 70 #endif // OS_CPU_LINUX_X86_VM_THREAD_LINUX_X86_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/vmStructs_linux_x86.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2000, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_LINUX_X86_VM_VMSTRUCTS_LINUX_X86_HPP 26 #define OS_CPU_LINUX_X86_VM_VMSTRUCTS_LINUX_X86_HPP 24 27 25 28 // These are the OS and CPU-specific fields, types and integer … … 59 62 /* This must be the last entry, and must be present */ \ 60 63 last_entry() 64 65 #endif // OS_CPU_LINUX_X86_VM_VMSTRUCTS_LINUX_X86_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/vm_version_linux_x86.cpp
r278 r309 1 1 /* 2 * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 # include "incls/_precompiled.incl" 26 # include "incls/_vm_version_linux_x86.cpp.incl" 25 #include "precompiled.hpp" 26 #include "runtime/os.hpp" 27 #include "vm_version_x86.hpp" 28 -
trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/assembler_linux_zero.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1997, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * Copyright 2009 Red Hat, Inc. 4 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. … … 24 24 */ 25 25 26 #include "precompiled.hpp" 27 #include "asm/assembler.hpp" 28 #include "assembler_zero.inline.hpp" 29 #include "runtime/os.hpp" 30 #include "runtime/threadLocalStorage.hpp" 31 26 32 // This file is intentionally empty -
trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 20 05, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * Copyright 2007, 2008 Red Hat, Inc. 4 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. … … 23 23 * 24 24 */ 25 26 #ifndef OS_CPU_LINUX_ZERO_VM_ATOMIC_LINUX_ZERO_INLINE_HPP 27 #define OS_CPU_LINUX_ZERO_VM_ATOMIC_LINUX_ZERO_INLINE_HPP 28 29 #include "orderAccess_linux_zero.inline.hpp" 30 #include "runtime/atomic.hpp" 31 #include "runtime/os.hpp" 32 #include "vm_version_zero.hpp" 25 33 26 34 // Implementation of class atomic … … 292 300 (intptr_t) compare_value); 293 301 } 302 303 #endif // OS_CPU_LINUX_ZERO_VM_ATOMIC_LINUX_ZERO_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/bytes_linux_zero.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_LINUX_ZERO_VM_BYTES_LINUX_ZERO_INLINE_HPP 26 #define OS_CPU_LINUX_ZERO_VM_BYTES_LINUX_ZERO_INLINE_HPP 27 25 28 // Efficient swapping of data bytes from Java byte 26 29 // ordering to native byte ordering and vice versa. … … 39 42 return bswap_64(x); 40 43 } 44 45 #endif // OS_CPU_LINUX_ZERO_VM_BYTES_LINUX_ZERO_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2000, 20 05, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * Copyright 2007, 2008, 2010 Red Hat, Inc. 4 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. … … 24 24 */ 25 25 26 #ifndef OS_CPU_LINUX_ZERO_VM_GLOBALS_LINUX_ZERO_HPP 27 #define OS_CPU_LINUX_ZERO_VM_GLOBALS_LINUX_ZERO_HPP 28 26 29 // 27 30 // Set the default values for platform dependent flags used by the … … 43 46 // Only used on 64 bit platforms 44 47 define_pd_global(uintx, HeapBaseMinAddress, 2*G); 48 49 #endif // OS_CPU_LINUX_ZERO_VM_GLOBALS_LINUX_ZERO_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * Copyright 2007, 2008, 2009 Red Hat, Inc. 4 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. … … 23 23 * 24 24 */ 25 26 #ifndef OS_CPU_LINUX_ZERO_VM_ORDERACCESS_LINUX_ZERO_INLINE_HPP 27 #define OS_CPU_LINUX_ZERO_VM_ORDERACCESS_LINUX_ZERO_INLINE_HPP 28 29 #include "runtime/orderAccess.hpp" 30 #include "vm_version_zero.hpp" 25 31 26 32 #ifdef ARM … … 166 172 inline void OrderAccess::release_store_ptr_fence(volatile intptr_t* p, intptr_t v) { release_store_ptr(p, v); fence(); } 167 173 inline void OrderAccess::release_store_ptr_fence(volatile void* p, void* v) { release_store_ptr(p, v); fence(); } 174 175 #endif // OS_CPU_LINUX_ZERO_VM_ORDERACCESS_LINUX_ZERO_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc. 4 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. … … 24 24 */ 25 25 26 // do not include precompiled header file 27 #include "incls/_os_linux_zero.cpp.incl" 26 // no precompiled headers 27 #include "assembler_zero.inline.hpp" 28 #include "classfile/classLoader.hpp" 29 #include "classfile/systemDictionary.hpp" 30 #include "classfile/vmSymbols.hpp" 31 #include "code/icBuffer.hpp" 32 #include "code/vtableStubs.hpp" 33 #include "interpreter/interpreter.hpp" 34 #include "jvm_linux.h" 35 #include "memory/allocation.inline.hpp" 36 #include "mutex_linux.inline.hpp" 37 #include "nativeInst_zero.hpp" 38 #include "os_share_linux.hpp" 39 #include "prims/jniFastGetField.hpp" 40 #include "prims/jvm.h" 41 #include "prims/jvm_misc.hpp" 42 #include "runtime/arguments.hpp" 43 #include "runtime/extendedPC.hpp" 44 #include "runtime/frame.inline.hpp" 45 #include "runtime/interfaceSupport.hpp" 46 #include "runtime/java.hpp" 47 #include "runtime/javaCalls.hpp" 48 #include "runtime/mutexLocker.hpp" 49 #include "runtime/osThread.hpp" 50 #include "runtime/sharedRuntime.hpp" 51 #include "runtime/stubRoutines.hpp" 52 #include "runtime/timer.hpp" 53 #include "thread_linux.inline.hpp" 54 #include "utilities/events.hpp" 55 #include "utilities/vmError.hpp" 56 #ifdef COMPILER1 57 #include "c1/c1_Runtime1.hpp" 58 #endif 59 #ifdef COMPILER2 60 #include "opto/runtime.hpp" 61 #endif 28 62 29 63 address os::current_stack_pointer() { … … 371 405 } 372 406 407 void os::print_register_info(outputStream *st, void *context) { 408 ShouldNotCallThis(); 409 } 410 373 411 ///////////////////////////////////////////////////////////////////////////// 374 412 // Stubs for things that would be in linux_zero.s if it existed. -
trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 20 04, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * Copyright 2007, 2008, 2010 Red Hat, Inc. 4 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. … … 23 23 * 24 24 */ 25 26 #ifndef OS_CPU_LINUX_ZERO_VM_OS_LINUX_ZERO_HPP 27 #define OS_CPU_LINUX_ZERO_VM_OS_LINUX_ZERO_HPP 25 28 26 29 static void setup_fpu() {} … … 50 53 #endif 51 54 } 55 56 #endif // OS_CPU_LINUX_ZERO_VM_OS_LINUX_ZERO_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/prefetch_linux_zero.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 20 04, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * Copyright 2007, 2008 Red Hat, Inc. 4 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. … … 24 24 */ 25 25 26 #ifndef OS_CPU_LINUX_ZERO_VM_PREFETCH_LINUX_ZERO_INLINE_HPP 27 #define OS_CPU_LINUX_ZERO_VM_PREFETCH_LINUX_ZERO_INLINE_HPP 28 29 #include "runtime/prefetch.hpp" 30 26 31 inline void Prefetch::read(void* loc, intx interval) { 27 32 } … … 29 34 inline void Prefetch::write(void* loc, intx interval) { 30 35 } 36 37 #endif // OS_CPU_LINUX_ZERO_VM_PREFETCH_LINUX_ZERO_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/threadLS_linux_zero.cpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * Copyright 2007 Red Hat, Inc. 4 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. … … 24 24 */ 25 25 26 #include "incls/_precompiled.incl" 27 #include "incls/_threadLS_linux_zero.cpp.incl" 26 #include "precompiled.hpp" 27 #include "runtime/threadLocalStorage.hpp" 28 #include "thread_linux.inline.hpp" 28 29 29 30 void ThreadLocalStorage::generate_code_for_get_thread() { -
trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/threadLS_linux_zero.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_LINUX_ZERO_VM_THREADLS_LINUX_ZERO_HPP 26 #define OS_CPU_LINUX_ZERO_VM_THREADLS_LINUX_ZERO_HPP 27 25 28 // Processor dependent parts of ThreadLocalStorage 26 29 … … 29 32 return (Thread*) os::thread_local_storage_at(thread_index()); 30 33 } 34 35 #endif // OS_CPU_LINUX_ZERO_VM_THREADLS_LINUX_ZERO_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1997, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * Copyright 2009, 2010 Red Hat, Inc. 4 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. … … 24 24 */ 25 25 26 #include "incls/_precompiled.incl" 27 #include "incls/_thread_linux_zero.cpp.incl" 26 #include "precompiled.hpp" 27 #include "runtime/frame.inline.hpp" 28 #include "thread_linux.inline.hpp" 28 29 29 30 void JavaThread::cache_global_variables() { -
trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2000, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc. 4 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. … … 23 23 * 24 24 */ 25 26 #ifndef OS_CPU_LINUX_ZERO_VM_THREAD_LINUX_ZERO_HPP 27 #define OS_CPU_LINUX_ZERO_VM_THREAD_LINUX_ZERO_HPP 25 28 26 29 private: … … 115 118 static void enable_register_stack_guard() {} 116 119 static void disable_register_stack_guard() {} 120 121 #endif // OS_CPU_LINUX_ZERO_VM_THREAD_LINUX_ZERO_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/vmStructs_linux_zero.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * Copyright 2007 Red Hat, Inc. 4 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. … … 24 24 */ 25 25 26 #ifndef OS_CPU_LINUX_ZERO_VM_VMSTRUCTS_LINUX_ZERO_HPP 27 #define OS_CPU_LINUX_ZERO_VM_VMSTRUCTS_LINUX_ZERO_HPP 28 26 29 // These are the OS and CPU-specific fields, types and integer 27 30 // constants required by the Serviceability Agent. This file is … … 44 47 /* This must be the last entry, and must be present */ \ 45 48 last_entry() 49 50 #endif // OS_CPU_LINUX_ZERO_VM_VMSTRUCTS_LINUX_ZERO_HPP -
trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/vm_version_linux_zero.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1997, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * Copyright 2009 Red Hat, Inc. 4 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. … … 24 24 */ 25 25 26 #include "precompiled.hpp" 27 #include "runtime/os.hpp" 28 #include "vm_version_zero.hpp" 29 26 30 // This file is intentionally empty -
trunk/openjdk/hotspot/src/os_cpu/os2_x86/vm/os2_x86_32.s
- Property svn:mergeinfo changed
/branches/vendor/oracle/openjdk6/b24/hotspot/src/os_cpu/os2_x86/vm/os2_x86_32.s (added) merged: 308 /branches/vendor/oracle/openjdk6/current/hotspot/src/os_cpu/os2_x86/vm/os2_x86_32.s merged: 276-307
- Property svn:mergeinfo changed
-
trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/assembler_solaris_sparc.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_assembler_solaris_sparc.cpp.incl" 25 #include "precompiled.hpp" 26 #include "asm/assembler.hpp" 27 #include "assembler_sparc.inline.hpp" 28 #include "runtime/os.hpp" 29 #include "runtime/threadLocalStorage.hpp" 27 30 28 31 #include <sys/trap.h> // For trap numbers -
trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/atomic_solaris_sparc.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 09, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_SOLARIS_SPARC_VM_ATOMIC_SOLARIS_SPARC_INLINE_HPP 26 #define OS_CPU_SOLARIS_SPARC_VM_ATOMIC_SOLARIS_SPARC_INLINE_HPP 27 28 #include "orderAccess_solaris_sparc.inline.hpp" 29 #include "runtime/atomic.hpp" 30 #include "runtime/os.hpp" 31 #include "vm_version_sparc.hpp" 32 25 33 // Implementation of class atomic 26 34 … … 28 36 inline void Atomic::store (jshort store_value, jshort* dest) { *dest = store_value; } 29 37 inline void Atomic::store (jint store_value, jint* dest) { *dest = store_value; } 30 inline void Atomic::store (jlong store_value, jlong* dest) { *dest = store_value; }31 38 inline void Atomic::store_ptr(intptr_t store_value, intptr_t* dest) { *dest = store_value; } 32 39 inline void Atomic::store_ptr(void* store_value, void* dest) { *(void**)dest = store_value; } … … 35 42 inline void Atomic::store (jshort store_value, volatile jshort* dest) { *dest = store_value; } 36 43 inline void Atomic::store (jint store_value, volatile jint* dest) { *dest = store_value; } 37 inline void Atomic::store (jlong store_value, volatile jlong* dest) { *dest = store_value; }38 44 inline void Atomic::store_ptr(intptr_t store_value, volatile intptr_t* dest) { *dest = store_value; } 39 45 inline void Atomic::store_ptr(void* store_value, volatile void* dest) { *(void* volatile *)dest = store_value; } … … 47 53 inline void Atomic::dec_ptr(volatile void* dest) { (void)add_ptr(-1, dest); } 48 54 55 56 #ifdef _LP64 57 58 inline void Atomic::store(jlong store_value, jlong* dest) { *dest = store_value; } 59 inline void Atomic::store(jlong store_value, volatile jlong* dest) { *dest = store_value; } 49 60 inline jlong Atomic::load(volatile jlong* src) { return *src; } 61 62 #else 63 64 extern "C" void _Atomic_move_long_v8(volatile jlong* src, volatile jlong* dst); 65 extern "C" void _Atomic_move_long_v9(volatile jlong* src, volatile jlong* dst); 66 67 inline void Atomic_move_long(volatile jlong* src, volatile jlong* dst) { 68 #ifdef COMPILER2 69 // Compiler2 does not support v8, it is used only for v9. 70 assert (VM_Version::v9_instructions_work(), "only supported on v9"); 71 _Atomic_move_long_v9(src, dst); 72 #else 73 // The branch is cheaper then emulated LDD. 74 if (VM_Version::v9_instructions_work()) { 75 _Atomic_move_long_v9(src, dst); 76 } else { 77 _Atomic_move_long_v8(src, dst); 78 } 79 #endif 80 } 81 82 inline jlong Atomic::load(volatile jlong* src) { 83 volatile jlong dest; 84 Atomic_move_long(src, &dest); 85 return dest; 86 } 87 88 inline void Atomic::store(jlong store_value, jlong* dest) { 89 Atomic_move_long((volatile jlong*)&store_value, (volatile jlong*)dest); 90 } 91 92 inline void Atomic::store(jlong store_value, volatile jlong* dest) { 93 Atomic_move_long((volatile jlong*)&store_value, dest); 94 } 95 96 #endif 50 97 51 98 #ifdef _GNU_SOURCE … … 343 390 344 391 #endif // _GNU_SOURCE 392 393 #endif // OS_CPU_SOLARIS_SPARC_VM_ATOMIC_SOLARIS_SPARC_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/globals_solaris_sparc.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2000, 20 09, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_SOLARIS_SPARC_VM_GLOBALS_SOLARIS_SPARC_HPP 26 #define OS_CPU_SOLARIS_SPARC_VM_GLOBALS_SOLARIS_SPARC_HPP 27 25 28 // 26 29 // Sets the default values for platform dependent flags used by the runtime system. … … 37 40 38 41 42 43 #endif // OS_CPU_SOLARIS_SPARC_VM_GLOBALS_SOLARIS_SPARC_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/orderAccess_solaris_sparc.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 201 0, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_SOLARIS_SPARC_VM_ORDERACCESS_SOLARIS_SPARC_INLINE_HPP 26 #define OS_CPU_SOLARIS_SPARC_VM_ORDERACCESS_SOLARIS_SPARC_INLINE_HPP 27 28 #include "runtime/orderAccess.hpp" 29 #include "vm_version_sparc.hpp" 24 30 25 31 // Implementation of class OrderAccess. … … 72 78 inline jshort OrderAccess::load_acquire(volatile jshort* p) { return *p; } 73 79 inline jint OrderAccess::load_acquire(volatile jint* p) { return *p; } 74 inline jlong OrderAccess::load_acquire(volatile jlong* p) { return *p; }80 inline jlong OrderAccess::load_acquire(volatile jlong* p) { return Atomic::load(p); } 75 81 inline jubyte OrderAccess::load_acquire(volatile jubyte* p) { return *p; } 76 82 inline jushort OrderAccess::load_acquire(volatile jushort* p) { return *p; } 77 83 inline juint OrderAccess::load_acquire(volatile juint* p) { return *p; } 78 inline julong OrderAccess::load_acquire(volatile julong* p) { return *p; }84 inline julong OrderAccess::load_acquire(volatile julong* p) { return Atomic::load((volatile jlong*)p); } 79 85 inline jfloat OrderAccess::load_acquire(volatile jfloat* p) { return *p; } 80 86 inline jdouble OrderAccess::load_acquire(volatile jdouble* p) { return *p; } … … 87 93 inline void OrderAccess::release_store(volatile jshort* p, jshort v) { *p = v; } 88 94 inline void OrderAccess::release_store(volatile jint* p, jint v) { *p = v; } 89 inline void OrderAccess::release_store(volatile jlong* p, jlong v) { *p = v; }95 inline void OrderAccess::release_store(volatile jlong* p, jlong v) { Atomic::store(v, p); } 90 96 inline void OrderAccess::release_store(volatile jubyte* p, jubyte v) { *p = v; } 91 97 inline void OrderAccess::release_store(volatile jushort* p, jushort v) { *p = v; } 92 98 inline void OrderAccess::release_store(volatile juint* p, juint v) { *p = v; } 93 inline void OrderAccess::release_store(volatile julong* p, julong v) { *p = v; }99 inline void OrderAccess::release_store(volatile julong* p, julong v) { Atomic::store((jlong)v, (volatile jlong*)p); } 94 100 inline void OrderAccess::release_store(volatile jfloat* p, jfloat v) { *p = v; } 95 101 inline void OrderAccess::release_store(volatile jdouble* p, jdouble v) { *p = v; } … … 115 121 inline void OrderAccess::release_store_fence(volatile jshort* p, jshort v) { *p = v; fence(); } 116 122 inline void OrderAccess::release_store_fence(volatile jint* p, jint v) { *p = v; fence(); } 117 inline void OrderAccess::release_store_fence(volatile jlong* p, jlong v) { *p = v; fence(); }123 inline void OrderAccess::release_store_fence(volatile jlong* p, jlong v) { release_store(p, v); fence(); } 118 124 inline void OrderAccess::release_store_fence(volatile jubyte* p, jubyte v) { *p = v; fence(); } 119 125 inline void OrderAccess::release_store_fence(volatile jushort* p, jushort v) { *p = v; fence(); } 120 126 inline void OrderAccess::release_store_fence(volatile juint* p, juint v) { *p = v; fence(); } 121 inline void OrderAccess::release_store_fence(volatile julong* p, julong v) { *p = v; fence(); }127 inline void OrderAccess::release_store_fence(volatile julong* p, julong v) { release_store(p, v); fence(); } 122 128 inline void OrderAccess::release_store_fence(volatile jfloat* p, jfloat v) { *p = v; fence(); } 123 129 inline void OrderAccess::release_store_fence(volatile jdouble* p, jdouble v) { *p = v; fence(); } … … 125 131 inline void OrderAccess::release_store_ptr_fence(volatile intptr_t* p, intptr_t v) { *p = v; fence(); } 126 132 inline void OrderAccess::release_store_ptr_fence(volatile void* p, void* v) { *(void* volatile *)p = v; fence(); } 133 134 #endif // OS_CPU_SOLARIS_SPARC_VM_ORDERACCESS_SOLARIS_SPARC_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 09, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 // do not include precompiled header file 25 // no precompiled headers 26 #include "assembler_sparc.inline.hpp" 27 #include "classfile/classLoader.hpp" 28 #include "classfile/systemDictionary.hpp" 29 #include "classfile/vmSymbols.hpp" 30 #include "code/icBuffer.hpp" 31 #include "code/vtableStubs.hpp" 32 #include "interpreter/interpreter.hpp" 33 #include "jvm_solaris.h" 34 #include "memory/allocation.inline.hpp" 35 #include "mutex_solaris.inline.hpp" 36 #include "nativeInst_sparc.hpp" 37 #include "os_share_solaris.hpp" 38 #include "prims/jniFastGetField.hpp" 39 #include "prims/jvm.h" 40 #include "prims/jvm_misc.hpp" 41 #include "runtime/arguments.hpp" 42 #include "runtime/extendedPC.hpp" 43 #include "runtime/frame.inline.hpp" 44 #include "runtime/interfaceSupport.hpp" 45 #include "runtime/java.hpp" 46 #include "runtime/javaCalls.hpp" 47 #include "runtime/mutexLocker.hpp" 48 #include "runtime/osThread.hpp" 49 #include "runtime/sharedRuntime.hpp" 50 #include "runtime/stubRoutines.hpp" 51 #include "runtime/timer.hpp" 52 #include "thread_solaris.inline.hpp" 53 #include "utilities/events.hpp" 54 #include "utilities/vmError.hpp" 55 #ifdef COMPILER1 56 #include "c1/c1_Runtime1.hpp" 57 #endif 58 #ifdef COMPILER2 59 #include "opto/runtime.hpp" 60 #endif 61 26 62 27 63 # include <signal.h> // needed first to avoid name collision for "std" with SC 5.0 28 29 # include "incls/_os_solaris_sparc.cpp.incl"30 64 31 65 // put OS-includes here … … 255 289 sprintf(lwpstatusfile, "/proc/%d/lwp/%d/lwpstatus", getpid(), 256 290 *lwp); 257 if ((lwpfd = open(lwpstatusfile, O_RDONLY)) < 0) {291 if ((lwpfd = ::open(lwpstatusfile, O_RDONLY)) < 0) { 258 292 perror("thr_mutator_status: open lwpstatus"); 259 293 return (EINVAL); … … 262 296 sizeof (lwpstatus_t)) { 263 297 perror("thr_mutator_status: read lwpstatus"); 264 (void) close(lwpfd);298 (void) ::close(lwpfd); 265 299 return (EINVAL); 266 300 } 267 (void) close(lwpfd);301 (void) ::close(lwpfd); 268 302 } 269 303 return (0); … … 541 575 } 542 576 577 // Sometimes the register windows are not properly flushed. 578 if(uc->uc_mcontext.gwins != NULL) { 579 ::handle_unflushed_register_windows(uc->uc_mcontext.gwins); 580 } 581 543 582 // unmask current signal 544 583 sigset_t newset; … … 547 586 sigprocmask(SIG_UNBLOCK, &newset, NULL); 548 587 588 // Determine which sort of error to throw. Out of swap may signal 589 // on the thread stack, which could get a mapping error when touched. 590 address addr = (address) info->si_addr; 591 if (sig == SIGBUS && info->si_code == BUS_OBJERR && info->si_errno == ENOMEM) { 592 vm_exit_out_of_memory(0, "Out of swap space to map in thread stack."); 593 } 594 549 595 VMError err(t, sig, pc, info, ucVoid); 550 596 err.report_and_die(); … … 559 605 st->print_cr("Registers:"); 560 606 607 st->print_cr(" G1=" INTPTR_FORMAT " G2=" INTPTR_FORMAT 608 " G3=" INTPTR_FORMAT " G4=" INTPTR_FORMAT, 609 uc->uc_mcontext.gregs[REG_G1], 610 uc->uc_mcontext.gregs[REG_G2], 611 uc->uc_mcontext.gregs[REG_G3], 612 uc->uc_mcontext.gregs[REG_G4]); 613 st->print_cr(" G5=" INTPTR_FORMAT " G6=" INTPTR_FORMAT 614 " G7=" INTPTR_FORMAT " Y=" INTPTR_FORMAT, 615 uc->uc_mcontext.gregs[REG_G5], 616 uc->uc_mcontext.gregs[REG_G6], 617 uc->uc_mcontext.gregs[REG_G7], 618 uc->uc_mcontext.gregs[REG_Y]); 561 619 st->print_cr(" O0=" INTPTR_FORMAT " O1=" INTPTR_FORMAT 562 620 " O2=" INTPTR_FORMAT " O3=" INTPTR_FORMAT, … … 572 630 uc->uc_mcontext.gregs[REG_O7]); 573 631 574 st->print_cr(" G1=" INTPTR_FORMAT " G2=" INTPTR_FORMAT 575 " G3=" INTPTR_FORMAT " G4=" INTPTR_FORMAT, 576 uc->uc_mcontext.gregs[REG_G1], 577 uc->uc_mcontext.gregs[REG_G2], 578 uc->uc_mcontext.gregs[REG_G3], 579 uc->uc_mcontext.gregs[REG_G4]); 580 st->print_cr(" G5=" INTPTR_FORMAT " G6=" INTPTR_FORMAT 581 " G7=" INTPTR_FORMAT " Y=" INTPTR_FORMAT, 582 uc->uc_mcontext.gregs[REG_G5], 583 uc->uc_mcontext.gregs[REG_G6], 584 uc->uc_mcontext.gregs[REG_G7], 585 uc->uc_mcontext.gregs[REG_Y]); 632 633 intptr_t *sp = (intptr_t *)os::Solaris::ucontext_get_sp(uc); 634 st->print_cr(" L0=" INTPTR_FORMAT " L1=" INTPTR_FORMAT 635 " L2=" INTPTR_FORMAT " L3=" INTPTR_FORMAT, 636 sp[L0->sp_offset_in_saved_window()], 637 sp[L1->sp_offset_in_saved_window()], 638 sp[L2->sp_offset_in_saved_window()], 639 sp[L3->sp_offset_in_saved_window()]); 640 st->print_cr(" L4=" INTPTR_FORMAT " L5=" INTPTR_FORMAT 641 " L6=" INTPTR_FORMAT " L7=" INTPTR_FORMAT, 642 sp[L4->sp_offset_in_saved_window()], 643 sp[L5->sp_offset_in_saved_window()], 644 sp[L6->sp_offset_in_saved_window()], 645 sp[L7->sp_offset_in_saved_window()]); 646 st->print_cr(" I0=" INTPTR_FORMAT " I1=" INTPTR_FORMAT 647 " I2=" INTPTR_FORMAT " I3=" INTPTR_FORMAT, 648 sp[I0->sp_offset_in_saved_window()], 649 sp[I1->sp_offset_in_saved_window()], 650 sp[I2->sp_offset_in_saved_window()], 651 sp[I3->sp_offset_in_saved_window()]); 652 st->print_cr(" I4=" INTPTR_FORMAT " I5=" INTPTR_FORMAT 653 " I6=" INTPTR_FORMAT " I7=" INTPTR_FORMAT, 654 sp[I4->sp_offset_in_saved_window()], 655 sp[I5->sp_offset_in_saved_window()], 656 sp[I6->sp_offset_in_saved_window()], 657 sp[I7->sp_offset_in_saved_window()]); 586 658 587 659 st->print_cr(" PC=" INTPTR_FORMAT " nPC=" INTPTR_FORMAT, 588 660 uc->uc_mcontext.gregs[REG_PC], 589 661 uc->uc_mcontext.gregs[REG_nPC]); 590 591 662 st->cr(); 592 663 st->cr(); 593 664 594 st->print_cr("Register to memory mapping:");595 st->cr();596 597 // this is only for the "general purpose" registers598 599 st->print_cr("O0=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O0]);600 print_location(st, uc->uc_mcontext.gregs[REG_O0]);601 st->cr();602 st->print_cr("O1=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O1]);603 print_location(st, uc->uc_mcontext.gregs[REG_O1]);604 st->cr();605 st->print_cr("O2=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O2]);606 print_location(st, uc->uc_mcontext.gregs[REG_O2]);607 st->cr();608 st->print_cr("O3=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O3]);609 print_location(st, uc->uc_mcontext.gregs[REG_O3]);610 st->cr();611 st->print_cr("O4=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O4]);612 print_location(st, uc->uc_mcontext.gregs[REG_O4]);613 st->cr();614 st->print_cr("O5=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O5]);615 print_location(st, uc->uc_mcontext.gregs[REG_O5]);616 st->cr();617 st->print_cr("O6=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O6]);618 print_location(st, uc->uc_mcontext.gregs[REG_O6]);619 st->cr();620 st->print_cr("O7=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O7]);621 print_location(st, uc->uc_mcontext.gregs[REG_O7]);622 st->cr();623 624 st->print_cr("G1=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G1]);625 print_location(st, uc->uc_mcontext.gregs[REG_G1]);626 st->cr();627 st->print_cr("G2=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G2]);628 print_location(st, uc->uc_mcontext.gregs[REG_G2]);629 st->cr();630 st->print_cr("G3=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G3]);631 print_location(st, uc->uc_mcontext.gregs[REG_G3]);632 st->cr();633 st->print_cr("G4=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G4]);634 print_location(st, uc->uc_mcontext.gregs[REG_G4]);635 st->cr();636 st->print_cr("G5=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G5]);637 print_location(st, uc->uc_mcontext.gregs[REG_G5]);638 st->cr();639 st->print_cr("G6=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G6]);640 print_location(st, uc->uc_mcontext.gregs[REG_G6]);641 st->cr();642 st->print_cr("G7=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G7]);643 print_location(st, uc->uc_mcontext.gregs[REG_G7]);644 645 st->cr();646 st->cr();647 648 intptr_t *sp = (intptr_t *)os::Solaris::ucontext_get_sp(uc);649 665 st->print_cr("Top of Stack: (sp=" PTR_FORMAT ")", sp); 650 666 print_hex_dump(st, (address)sp, (address)(sp + 32), sizeof(intptr_t)); … … 657 673 address pc = epc.pc(); 658 674 st->print_cr("Instructions: (pc=" PTR_FORMAT ")", pc); 659 print_hex_dump(st, pc - 16, pc + 16, sizeof(char)); 675 print_hex_dump(st, pc - 32, pc + 32, sizeof(char)); 676 } 677 678 void os::print_register_info(outputStream *st, void *context) { 679 if (context == NULL) return; 680 681 ucontext_t *uc = (ucontext_t*)context; 682 intptr_t *sp = (intptr_t *)os::Solaris::ucontext_get_sp(uc); 683 684 st->print_cr("Register to memory mapping:"); 685 st->cr(); 686 687 // this is only for the "general purpose" registers 688 st->print("G1="); print_location(st, uc->uc_mcontext.gregs[REG_G1]); 689 st->print("G2="); print_location(st, uc->uc_mcontext.gregs[REG_G2]); 690 st->print("G3="); print_location(st, uc->uc_mcontext.gregs[REG_G3]); 691 st->print("G4="); print_location(st, uc->uc_mcontext.gregs[REG_G4]); 692 st->print("G5="); print_location(st, uc->uc_mcontext.gregs[REG_G5]); 693 st->print("G6="); print_location(st, uc->uc_mcontext.gregs[REG_G6]); 694 st->print("G7="); print_location(st, uc->uc_mcontext.gregs[REG_G7]); 695 st->cr(); 696 697 st->print("O0="); print_location(st, uc->uc_mcontext.gregs[REG_O0]); 698 st->print("O1="); print_location(st, uc->uc_mcontext.gregs[REG_O1]); 699 st->print("O2="); print_location(st, uc->uc_mcontext.gregs[REG_O2]); 700 st->print("O3="); print_location(st, uc->uc_mcontext.gregs[REG_O3]); 701 st->print("O4="); print_location(st, uc->uc_mcontext.gregs[REG_O4]); 702 st->print("O5="); print_location(st, uc->uc_mcontext.gregs[REG_O5]); 703 st->print("O6="); print_location(st, uc->uc_mcontext.gregs[REG_O6]); 704 st->print("O7="); print_location(st, uc->uc_mcontext.gregs[REG_O7]); 705 st->cr(); 706 707 st->print("L0="); print_location(st, sp[L0->sp_offset_in_saved_window()]); 708 st->print("L1="); print_location(st, sp[L1->sp_offset_in_saved_window()]); 709 st->print("L2="); print_location(st, sp[L2->sp_offset_in_saved_window()]); 710 st->print("L3="); print_location(st, sp[L3->sp_offset_in_saved_window()]); 711 st->print("L4="); print_location(st, sp[L4->sp_offset_in_saved_window()]); 712 st->print("L5="); print_location(st, sp[L5->sp_offset_in_saved_window()]); 713 st->print("L6="); print_location(st, sp[L6->sp_offset_in_saved_window()]); 714 st->print("L7="); print_location(st, sp[L7->sp_offset_in_saved_window()]); 715 st->cr(); 716 717 st->print("I0="); print_location(st, sp[I0->sp_offset_in_saved_window()]); 718 st->print("I1="); print_location(st, sp[I1->sp_offset_in_saved_window()]); 719 st->print("I2="); print_location(st, sp[I2->sp_offset_in_saved_window()]); 720 st->print("I3="); print_location(st, sp[I3->sp_offset_in_saved_window()]); 721 st->print("I4="); print_location(st, sp[I4->sp_offset_in_saved_window()]); 722 st->print("I5="); print_location(st, sp[I5->sp_offset_in_saved_window()]); 723 st->print("I6="); print_location(st, sp[I6->sp_offset_in_saved_window()]); 724 st->print("I7="); print_location(st, sp[I7->sp_offset_in_saved_window()]); 725 st->cr(); 660 726 } 661 727 -
trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 09, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_SOLARIS_SPARC_VM_OS_SOLARIS_SPARC_HPP 26 #define OS_CPU_SOLARIS_SPARC_VM_OS_SOLARIS_SPARC_HPP 27 25 28 // 26 29 // NOTE: we are back in class os here, not Solaris … … 43 46 // Note: Currently only used in 64 bit Windows implementations 44 47 static bool register_code_area(char *low, char *high) { return true; } 48 49 #endif // OS_CPU_SOLARIS_SPARC_VM_OS_SOLARIS_SPARC_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/prefetch_solaris_sparc.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_SOLARIS_SPARC_VM_PREFETCH_SOLARIS_SPARC_INLINE_HPP 26 #define OS_CPU_SOLARIS_SPARC_VM_PREFETCH_SOLARIS_SPARC_INLINE_HPP 27 28 #include "runtime/prefetch.hpp" 24 29 25 30 #if defined(COMPILER2) || defined(_LP64) … … 57 62 58 63 #endif // defined(COMPILER2) || defined(_LP64) 64 65 #endif // OS_CPU_SOLARIS_SPARC_VM_PREFETCH_SOLARIS_SPARC_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/solaris_sparc.il
r278 r309 1 1 // 2 // Copyright (c) 2002, 20 05, Oracle and/or its affiliates. All rights reserved.2 // Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved. 3 3 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 // … … 153 153 .end 154 154 155 // Support for jlong Atomic::load and Atomic::store on v8. 156 // 157 // void _Atomic_move_long_v8(volatile jlong* src, volatile jlong* dst) 158 // 159 // Arguments: 160 // src: O0 161 // dest: O1 162 // 163 // Overwrites O2 and O3 164 165 .inline _Atomic_move_long_v8,2 166 .volatile 167 ldd [%o0], %o2 168 std %o2, [%o1] 169 .nonvolatile 170 .end 171 172 // Support for jlong Atomic::load and Atomic::store on v9. 173 // 174 // void _Atomic_move_long_v9(volatile jlong* src, volatile jlong* dst) 175 // 176 // Arguments: 177 // src: O0 178 // dest: O1 179 // 180 // Overwrites O2 181 182 .inline _Atomic_move_long_v9,2 183 .volatile 184 ldx [%o0], %o2 185 stx %o2, [%o1] 186 .nonvolatile 187 .end 155 188 156 189 // Support for jint Atomic::add(jint add_value, volatile jint* dest). -
trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/threadLS_solaris_sparc.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1998, 20 03, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "precompiled.hpp" 26 #include "runtime/threadLocalStorage.hpp" 27 #include "thread_solaris.inline.hpp" 28 25 29 // Provides an entry point we can link against and 26 30 // a buffer we can emit code into. The buffer is … … 28 32 // and called from ThreadLocalStorage::thread() 29 33 30 #include "incls/_precompiled.incl"31 #include "incls/_threadLS_solaris_sparc.cpp.incl"32 34 #include <sys/systeminfo.h> 33 35 -
trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/threadLS_solaris_sparc.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1998, 20 05, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_SOLARIS_SPARC_VM_THREADLS_SOLARIS_SPARC_HPP 26 #define OS_CPU_SOLARIS_SPARC_VM_THREADLS_SOLARIS_SPARC_HPP 24 27 25 28 public: … … 65 68 return ix; 66 69 } 70 71 #endif // OS_CPU_SOLARIS_SPARC_VM_THREADLS_SOLARIS_SPARC_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/thread_solaris_sparc.cpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_thread_solaris_sparc.cpp.incl" 25 #include "precompiled.hpp" 26 #include "runtime/frame.inline.hpp" 27 #include "thread_solaris.inline.hpp" 27 28 28 29 // For Forte Analyzer AsyncGetCallTrace profiling support - thread is -
trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/thread_solaris_sparc.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1998, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_SOLARIS_SPARC_VM_THREAD_SOLARIS_SPARC_HPP 26 #define OS_CPU_SOLARIS_SPARC_VM_THREAD_SOLARIS_SPARC_HPP 24 27 private: 25 28 … … 96 99 static void enable_register_stack_guard() {} 97 100 static void disable_register_stack_guard() {} 101 102 #endif // OS_CPU_SOLARIS_SPARC_VM_THREAD_SOLARIS_SPARC_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/vmStructs_solaris_sparc.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2000, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_SOLARIS_SPARC_VM_VMSTRUCTS_SOLARIS_SPARC_HPP 26 #define OS_CPU_SOLARIS_SPARC_VM_VMSTRUCTS_SOLARIS_SPARC_HPP 24 27 25 28 // These are the OS and CPU-specific fields, types and integer … … 66 69 /* This must be the last entry, and must be present */ \ 67 70 last_entry() 71 72 #endif // OS_CPU_SOLARIS_SPARC_VM_VMSTRUCTS_SOLARIS_SPARC_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp
r278 r309 1 1 /* 2 * Copyright (c) 2006, 20 09, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 # include "incls/_precompiled.incl" 26 # include "incls/_vm_version_solaris_sparc.cpp.incl" 25 #include "precompiled.hpp" 26 #include "runtime/os.hpp" 27 #include "vm_version_sparc.hpp" 27 28 28 29 # include <sys/auxv.h> 29 30 # include <sys/auxv_SPARC.h> 30 31 # include <sys/systeminfo.h> 32 # include <kstat.h> 31 33 32 34 // We need to keep these here as long as we have to build on Solaris … … 66 68 // supported on Solaris 10 and later. 67 69 if (os::Solaris::supports_getisax()) { 68 #ifndef PRODUCT69 if (PrintMiscellaneous && Verbose)70 tty->print_cr("getisax(2) supported.");71 #endif72 70 73 71 // Check 32-bit architecture. … … 81 79 uint_t avn = os::Solaris::getisax(&av, 1); 82 80 assert(avn == 1, "should only return one av"); 81 82 #ifndef PRODUCT 83 if (PrintMiscellaneous && Verbose) 84 tty->print_cr("getisax(2) returned: " PTR32_FORMAT, av); 85 #endif 83 86 84 87 if (av & AV_SPARC_MUL32) features |= hardware_mul32_m; … … 89 92 if (av & AV_SPARC_VIS) features |= vis1_instructions_m; 90 93 if (av & AV_SPARC_VIS2) features |= vis2_instructions_m; 94 95 // Next values are not defined before Solaris 10 96 // but Solaris 8 is used for jdk6 update builds. 97 #ifndef AV_SPARC_ASI_BLK_INIT 98 #define AV_SPARC_ASI_BLK_INIT 0x0080 /* ASI_BLK_INIT_xxx ASI */ 99 #endif 100 if (av & AV_SPARC_ASI_BLK_INIT) features |= blk_init_instructions_m; 101 102 #ifndef AV_SPARC_FMAF 103 #define AV_SPARC_FMAF 0x0100 /* Fused Multiply-Add */ 104 #endif 105 if (av & AV_SPARC_FMAF) features |= fmaf_instructions_m; 106 107 #ifndef AV_SPARC_FMAU 108 #define AV_SPARC_FMAU 0x0200 /* Unfused Multiply-Add */ 109 #endif 110 if (av & AV_SPARC_FMAU) features |= fmau_instructions_m; 111 112 #ifndef AV_SPARC_VIS3 113 #define AV_SPARC_VIS3 0x0400 /* VIS3 instruction set extensions */ 114 #endif 115 if (av & AV_SPARC_VIS3) features |= vis3_instructions_m; 116 91 117 } else { 92 118 // getisax(2) failed, use the old legacy code. 93 119 #ifndef PRODUCT 94 120 if (PrintMiscellaneous && Verbose) 95 tty->print_cr("getisax(2) not supported.");121 tty->print_cr("getisax(2) is not supported."); 96 122 #endif 97 123 … … 128 154 do_sysinfo(SI_MACHINE, "sun4v", &features, sun4v_m); 129 155 156 { 157 // Using kstat to determine the machine type. 158 kstat_ctl_t* kc = kstat_open(); 159 kstat_t* ksp = kstat_lookup(kc, (char*)"cpu_info", -1, NULL); 160 const char* implementation = "UNKNOWN"; 161 if (ksp != NULL) { 162 if (kstat_read(kc, ksp, NULL) != -1 && ksp->ks_data != NULL) { 163 kstat_named_t* knm = (kstat_named_t *)ksp->ks_data; 164 for (int i = 0; i < ksp->ks_ndata; i++) { 165 if (strcmp((const char*)&(knm[i].name),"implementation") == 0) { 166 #ifndef KSTAT_DATA_STRING 167 #define KSTAT_DATA_STRING 9 168 #endif 169 if (knm[i].data_type == KSTAT_DATA_CHAR) { 170 // VM is running on Solaris 8 which does not have value.str. 171 implementation = &(knm[i].value.c[0]); 172 } else if (knm[i].data_type == KSTAT_DATA_STRING) { 173 // VM is running on Solaris 10. 174 #ifndef KSTAT_NAMED_STR_PTR 175 // Solaris 8 was used to build VM, define the structure it misses. 176 struct str_t { 177 union { 178 char *ptr; /* NULL-term string */ 179 char __pad[8]; /* 64-bit padding */ 180 } addr; 181 uint32_t len; /* # bytes for strlen + '\0' */ 182 }; 183 #define KSTAT_NAMED_STR_PTR(knptr) (( (str_t*)&((knptr)->value) )->addr.ptr) 184 #endif 185 implementation = KSTAT_NAMED_STR_PTR(&knm[i]); 186 } 187 #ifndef PRODUCT 188 if (PrintMiscellaneous && Verbose) { 189 tty->print_cr("cpu_info.implementation: %s", implementation); 190 } 191 #endif 192 // Convert to UPPER case before compare. 193 char* impl = strdup(implementation); 194 195 for (int i = 0; impl[i] != 0; i++) 196 impl[i] = (char)toupper((uint)impl[i]); 197 if (strstr(impl, "SPARC64") != NULL) { 198 features |= sparc64_family_m; 199 } else if (strstr(impl, "SPARC-T") != NULL) { 200 features |= T_family_m; 201 if (strstr(impl, "SPARC-T1") != NULL) { 202 features |= T1_model_m; 203 } 204 } else { 205 assert(strstr(impl, "SPARC") != NULL, "should be sparc"); 206 } 207 free((void*)impl); 208 break; 209 } 210 } // for( 211 } 212 } 213 assert(strcmp(implementation, "UNKNOWN") != 0, 214 "unknown cpu info (changed kstat interface?)"); 215 kstat_close(kc); 216 } 217 130 218 return features; 131 219 } -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/assembler_solaris_x86.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_assembler_solaris_x86.cpp.incl" 25 #include "precompiled.hpp" 26 #include "asm/assembler.hpp" 27 #include "assembler_x86.inline.hpp" 28 #include "runtime/os.hpp" 29 #include "runtime/threadLocalStorage.hpp" 27 30 28 31 -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/atomic_solaris_x86.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 09, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_SOLARIS_X86_VM_ATOMIC_SOLARIS_X86_INLINE_HPP 26 #define OS_CPU_SOLARIS_X86_VM_ATOMIC_SOLARIS_X86_INLINE_HPP 27 28 #include "orderAccess_solaris_x86.inline.hpp" 29 #include "runtime/atomic.hpp" 30 #include "runtime/os.hpp" 31 #include "vm_version_x86.hpp" 24 32 25 33 inline void Atomic::store (jbyte store_value, jbyte* dest) { *dest = store_value; } … … 144 152 } 145 153 146 extern "C" void _Atomic_ load_long(volatile jlong* src, volatile jlong* dst);154 extern "C" void _Atomic_move_long(volatile jlong* src, volatile jlong* dst); 147 155 148 156 inline jlong Atomic::load(volatile jlong* src) { 149 157 volatile jlong dest; 150 _Atomic_ load_long(src, &dest);158 _Atomic_move_long(src, &dest); 151 159 return dest; 160 } 161 162 inline void Atomic::store(jlong store_value, jlong* dest) { 163 _Atomic_move_long((volatile jlong*)&store_value, (volatile jlong*)dest); 164 } 165 166 inline void Atomic::store(jlong store_value, volatile jlong* dest) { 167 _Atomic_move_long((volatile jlong*)&store_value, dest); 152 168 } 153 169 … … 246 262 247 263 #endif // _GNU_SOURCE 264 265 #endif // OS_CPU_SOLARIS_X86_VM_ATOMIC_SOLARIS_X86_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/bytes_solaris_x86.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1998, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_SOLARIS_X86_VM_BYTES_SOLARIS_X86_INLINE_HPP 26 #define OS_CPU_SOLARIS_X86_VM_BYTES_SOLARIS_X86_INLINE_HPP 24 27 25 28 // For Sun Studio - implementation is in solaris_i486.il. … … 110 113 } 111 114 #endif //_GNU_SOURCE 115 116 #endif // OS_CPU_SOLARIS_X86_VM_BYTES_SOLARIS_X86_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/copy_solaris_x86.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 20 04, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_SOLARIS_X86_VM_COPY_SOLARIS_X86_INLINE_HPP 26 #define OS_CPU_SOLARIS_X86_VM_COPY_SOLARIS_X86_INLINE_HPP 24 27 25 28 static void pd_conjoint_words(HeapWord* from, HeapWord* to, size_t count) { … … 137 140 #endif // AMD64 138 141 } 142 143 #endif // OS_CPU_SOLARIS_X86_VM_COPY_SOLARIS_X86_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp
r278 r309 23 23 */ 24 24 25 #ifndef OS_CPU_SOLARIS_X86_VM_GLOBALS_SOLARIS_X86_HPP 26 #define OS_CPU_SOLARIS_X86_VM_GLOBALS_SOLARIS_X86_HPP 27 25 28 // Sets the default values for platform dependent flags used by the runtime system. 26 29 // (see globals.hpp) … … 45 48 // Only used on 64 bit Windows platforms 46 49 define_pd_global(bool, UseVectoredExceptions, false); 50 51 #endif // OS_CPU_SOLARIS_X86_VM_GLOBALS_SOLARIS_X86_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/orderAccess_solaris_x86.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 201 0, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_SOLARIS_X86_VM_ORDERACCESS_SOLARIS_X86_INLINE_HPP 26 #define OS_CPU_SOLARIS_X86_VM_ORDERACCESS_SOLARIS_X86_INLINE_HPP 27 28 #include "runtime/atomic.hpp" 29 #include "runtime/orderAccess.hpp" 30 #include "vm_version_x86.hpp" 24 31 25 32 // Implementation of class OrderAccess. … … 75 82 inline jshort OrderAccess::load_acquire(volatile jshort* p) { return *p; } 76 83 inline jint OrderAccess::load_acquire(volatile jint* p) { return *p; } 77 inline jlong OrderAccess::load_acquire(volatile jlong* p) { return *p; }84 inline jlong OrderAccess::load_acquire(volatile jlong* p) { return Atomic::load(p); } 78 85 inline jubyte OrderAccess::load_acquire(volatile jubyte* p) { return *p; } 79 86 inline jushort OrderAccess::load_acquire(volatile jushort* p) { return *p; } 80 87 inline juint OrderAccess::load_acquire(volatile juint* p) { return *p; } 81 inline julong OrderAccess::load_acquire(volatile julong* p) { return *p; }88 inline julong OrderAccess::load_acquire(volatile julong* p) { return Atomic::load((volatile jlong*)p); } 82 89 inline jfloat OrderAccess::load_acquire(volatile jfloat* p) { return *p; } 83 90 inline jdouble OrderAccess::load_acquire(volatile jdouble* p) { return *p; } … … 90 97 inline void OrderAccess::release_store(volatile jshort* p, jshort v) { *p = v; } 91 98 inline void OrderAccess::release_store(volatile jint* p, jint v) { *p = v; } 92 inline void OrderAccess::release_store(volatile jlong* p, jlong v) { *p = v; }99 inline void OrderAccess::release_store(volatile jlong* p, jlong v) { Atomic::store(v, p); } 93 100 inline void OrderAccess::release_store(volatile jubyte* p, jubyte v) { *p = v; } 94 101 inline void OrderAccess::release_store(volatile jushort* p, jushort v) { *p = v; } 95 102 inline void OrderAccess::release_store(volatile juint* p, juint v) { *p = v; } 96 inline void OrderAccess::release_store(volatile julong* p, julong v) { *p = v; }103 inline void OrderAccess::release_store(volatile julong* p, julong v) { Atomic::store((jlong)v, (volatile jlong*)p); } 97 104 inline void OrderAccess::release_store(volatile jfloat* p, jfloat v) { *p = v; } 98 105 inline void OrderAccess::release_store(volatile jdouble* p, jdouble v) { *p = v; } … … 118 125 inline void OrderAccess::release_store_fence(volatile jshort* p, jshort v) { *p = v; fence(); } 119 126 inline void OrderAccess::release_store_fence(volatile jint* p, jint v) { *p = v; fence(); } 120 inline void OrderAccess::release_store_fence(volatile jlong* p, jlong v) { *p = v; fence(); }127 inline void OrderAccess::release_store_fence(volatile jlong* p, jlong v) { release_store(p, v); fence(); } 121 128 inline void OrderAccess::release_store_fence(volatile jubyte* p, jubyte v) { *p = v; fence(); } 122 129 inline void OrderAccess::release_store_fence(volatile jushort* p, jushort v) { *p = v; fence(); } 123 130 inline void OrderAccess::release_store_fence(volatile juint* p, juint v) { *p = v; fence(); } 124 inline void OrderAccess::release_store_fence(volatile julong* p, julong v) { *p = v; fence(); }131 inline void OrderAccess::release_store_fence(volatile julong* p, julong v) { release_store(p, v); fence(); } 125 132 inline void OrderAccess::release_store_fence(volatile jfloat* p, jfloat v) { *p = v; fence(); } 126 133 inline void OrderAccess::release_store_fence(volatile jdouble* p, jdouble v) { *p = v; fence(); } … … 128 135 inline void OrderAccess::release_store_ptr_fence(volatile intptr_t* p, intptr_t v) { *p = v; fence(); } 129 136 inline void OrderAccess::release_store_ptr_fence(volatile void* p, void* v) { *(void* volatile *)p = v; fence(); } 137 138 #endif // OS_CPU_SOLARIS_X86_VM_ORDERACCESS_SOLARIS_X86_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp
r278 r309 23 23 */ 24 24 25 // do not include precompiled header file 26 # include "incls/_os_solaris_x86.cpp.incl" 25 // no precompiled headers 26 #include "assembler_x86.inline.hpp" 27 #include "classfile/classLoader.hpp" 28 #include "classfile/systemDictionary.hpp" 29 #include "classfile/vmSymbols.hpp" 30 #include "code/icBuffer.hpp" 31 #include "code/vtableStubs.hpp" 32 #include "interpreter/interpreter.hpp" 33 #include "jvm_solaris.h" 34 #include "memory/allocation.inline.hpp" 35 #include "mutex_solaris.inline.hpp" 36 #include "nativeInst_x86.hpp" 37 #include "os_share_solaris.hpp" 38 #include "prims/jniFastGetField.hpp" 39 #include "prims/jvm.h" 40 #include "prims/jvm_misc.hpp" 41 #include "runtime/arguments.hpp" 42 #include "runtime/extendedPC.hpp" 43 #include "runtime/frame.inline.hpp" 44 #include "runtime/interfaceSupport.hpp" 45 #include "runtime/java.hpp" 46 #include "runtime/javaCalls.hpp" 47 #include "runtime/mutexLocker.hpp" 48 #include "runtime/osThread.hpp" 49 #include "runtime/sharedRuntime.hpp" 50 #include "runtime/stubRoutines.hpp" 51 #include "runtime/timer.hpp" 52 #include "thread_solaris.inline.hpp" 53 #include "utilities/events.hpp" 54 #include "utilities/vmError.hpp" 55 #ifdef COMPILER1 56 #include "c1/c1_Runtime1.hpp" 57 #endif 58 #ifdef COMPILER2 59 #include "opto/runtime.hpp" 60 #endif 27 61 28 62 // put OS-includes here … … 709 743 sigprocmask(SIG_UNBLOCK, &newset, NULL); 710 744 745 // Determine which sort of error to throw. Out of swap may signal 746 // on the thread stack, which could get a mapping error when touched. 747 address addr = (address) info->si_addr; 748 if (sig == SIGBUS && info->si_code == BUS_OBJERR && info->si_errno == ENOMEM) { 749 vm_exit_out_of_memory(0, "Out of swap space to map in thread stack."); 750 } 751 711 752 VMError err(t, sig, pc, info, ucVoid); 712 753 err.report_and_die(); … … 720 761 ucontext_t *uc = (ucontext_t*)context; 721 762 st->print_cr("Registers:"); 722 723 // this is horrendously verbose but the layout of the registers in the724 // context does not match how we defined our abstract Register set, so725 // we can't just iterate through the gregs area726 727 763 #ifdef AMD64 728 764 st->print( "RAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RAX]); … … 736 772 st->print(", RDI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RDI]); 737 773 st->cr(); 738 st->print( "R8 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R8]);739 st->print(", R9 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R9]);774 st->print( "R8 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R8]); 775 st->print(", R9 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R9]); 740 776 st->print(", R10=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R10]); 741 777 st->print(", R11=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R11]); … … 748 784 st->print( "RIP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RIP]); 749 785 st->print(", RFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RFL]); 750 751 st->cr();752 st->cr();753 754 st->print_cr("Register to memory mapping:");755 st->cr();756 757 // this is only for the "general purpose" registers758 759 st->print_cr("RAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RAX]);760 print_location(st, uc->uc_mcontext.gregs[REG_RAX]);761 st->cr();762 st->print_cr("RBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBX]);763 print_location(st, uc->uc_mcontext.gregs[REG_RBX]);764 st->cr();765 st->print_cr("RCX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RCX]);766 print_location(st, uc->uc_mcontext.gregs[REG_RCX]);767 st->cr();768 st->print_cr("RDX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RDX]);769 print_location(st, uc->uc_mcontext.gregs[REG_RDX]);770 st->cr();771 st->print_cr("RSP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RSP]);772 print_location(st, uc->uc_mcontext.gregs[REG_RSP]);773 st->cr();774 st->print_cr("RBP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBP]);775 print_location(st, uc->uc_mcontext.gregs[REG_RSP]);776 st->cr();777 st->print_cr("RSI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RSI]);778 print_location(st, uc->uc_mcontext.gregs[REG_RSI]);779 st->cr();780 st->print_cr("RDI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RDI]);781 print_location(st, uc->uc_mcontext.gregs[REG_RDI]);782 st->cr();783 st->print_cr("R8 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R8]);784 print_location(st, uc->uc_mcontext.gregs[REG_R8]);785 st->cr();786 st->print_cr("R9 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R9]);787 print_location(st, uc->uc_mcontext.gregs[REG_R9]);788 st->cr();789 st->print_cr("R10=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R10]);790 print_location(st, uc->uc_mcontext.gregs[REG_R10]);791 st->cr();792 st->print_cr("R11=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R11]);793 print_location(st, uc->uc_mcontext.gregs[REG_R11]);794 st->cr();795 st->print_cr("R12=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R12]);796 print_location(st, uc->uc_mcontext.gregs[REG_R12]);797 st->cr();798 st->print_cr("R13=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R13]);799 print_location(st, uc->uc_mcontext.gregs[REG_R13]);800 st->cr();801 st->print_cr("R14=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R14]);802 print_location(st, uc->uc_mcontext.gregs[REG_R14]);803 st->cr();804 st->print_cr("R15=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R15]);805 print_location(st, uc->uc_mcontext.gregs[REG_R15]);806 807 786 #else 808 787 st->print( "EAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EAX]); … … 818 797 st->print( "EIP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EIP]); 819 798 st->print(", EFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EFL]); 820 821 st->cr();822 st->cr();823 824 st->print_cr("Register to memory mapping:");825 st->cr();826 827 // this is only for the "general purpose" registers828 829 st->print_cr("EAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EAX]);830 print_location(st, uc->uc_mcontext.gregs[EAX]);831 st->cr();832 st->print_cr("EBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EBX]);833 print_location(st, uc->uc_mcontext.gregs[EBX]);834 st->cr();835 st->print_cr("ECX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[ECX]);836 print_location(st, uc->uc_mcontext.gregs[ECX]);837 st->cr();838 st->print_cr("EDX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EDX]);839 print_location(st, uc->uc_mcontext.gregs[EDX]);840 st->cr();841 st->print_cr("ESP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[UESP]);842 print_location(st, uc->uc_mcontext.gregs[UESP]);843 st->cr();844 st->print_cr("EBP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EBP]);845 print_location(st, uc->uc_mcontext.gregs[EBP]);846 st->cr();847 st->print_cr("ESI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[ESI]);848 print_location(st, uc->uc_mcontext.gregs[ESI]);849 st->cr();850 st->print_cr("EDI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EDI]);851 print_location(st, uc->uc_mcontext.gregs[EDI]);852 853 799 #endif // AMD64 854 800 st->cr(); … … 866 812 address pc = epc.pc(); 867 813 st->print_cr("Instructions: (pc=" PTR_FORMAT ")", pc); 868 print_hex_dump(st, pc - 16, pc + 16, sizeof(char)); 814 print_hex_dump(st, pc - 32, pc + 32, sizeof(char)); 815 } 816 817 void os::print_register_info(outputStream *st, void *context) { 818 if (context == NULL) return; 819 820 ucontext_t *uc = (ucontext_t*)context; 821 822 st->print_cr("Register to memory mapping:"); 823 st->cr(); 824 825 // this is horrendously verbose but the layout of the registers in the 826 // context does not match how we defined our abstract Register set, so 827 // we can't just iterate through the gregs area 828 829 // this is only for the "general purpose" registers 830 831 #ifdef AMD64 832 st->print("RAX="); print_location(st, uc->uc_mcontext.gregs[REG_RAX]); 833 st->print("RBX="); print_location(st, uc->uc_mcontext.gregs[REG_RBX]); 834 st->print("RCX="); print_location(st, uc->uc_mcontext.gregs[REG_RCX]); 835 st->print("RDX="); print_location(st, uc->uc_mcontext.gregs[REG_RDX]); 836 st->print("RSP="); print_location(st, uc->uc_mcontext.gregs[REG_RSP]); 837 st->print("RBP="); print_location(st, uc->uc_mcontext.gregs[REG_RBP]); 838 st->print("RSI="); print_location(st, uc->uc_mcontext.gregs[REG_RSI]); 839 st->print("RDI="); print_location(st, uc->uc_mcontext.gregs[REG_RDI]); 840 st->print("R8 ="); print_location(st, uc->uc_mcontext.gregs[REG_R8]); 841 st->print("R9 ="); print_location(st, uc->uc_mcontext.gregs[REG_R9]); 842 st->print("R10="); print_location(st, uc->uc_mcontext.gregs[REG_R10]); 843 st->print("R11="); print_location(st, uc->uc_mcontext.gregs[REG_R11]); 844 st->print("R12="); print_location(st, uc->uc_mcontext.gregs[REG_R12]); 845 st->print("R13="); print_location(st, uc->uc_mcontext.gregs[REG_R13]); 846 st->print("R14="); print_location(st, uc->uc_mcontext.gregs[REG_R14]); 847 st->print("R15="); print_location(st, uc->uc_mcontext.gregs[REG_R15]); 848 #else 849 st->print("EAX="); print_location(st, uc->uc_mcontext.gregs[EAX]); 850 st->print("EBX="); print_location(st, uc->uc_mcontext.gregs[EBX]); 851 st->print("ECX="); print_location(st, uc->uc_mcontext.gregs[ECX]); 852 st->print("EDX="); print_location(st, uc->uc_mcontext.gregs[EDX]); 853 st->print("ESP="); print_location(st, uc->uc_mcontext.gregs[UESP]); 854 st->print("EBP="); print_location(st, uc->uc_mcontext.gregs[EBP]); 855 st->print("ESI="); print_location(st, uc->uc_mcontext.gregs[ESI]); 856 st->print("EDI="); print_location(st, uc->uc_mcontext.gregs[EDI]); 857 #endif 858 859 st->cr(); 869 860 } 870 861 -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 09, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_SOLARIS_X86_VM_OS_SOLARIS_X86_HPP 26 #define OS_CPU_SOLARIS_X86_VM_OS_SOLARIS_X86_HPP 24 27 25 28 // … … 49 52 // Note: Currently only used in 64 bit Windows implementations 50 53 static bool register_code_area(char *low, char *high) { return true; } 54 55 #endif // OS_CPU_SOLARIS_X86_VM_OS_SOLARIS_X86_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/prefetch_solaris_x86.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_SOLARIS_X86_VM_PREFETCH_SOLARIS_X86_INLINE_HPP 26 #define OS_CPU_SOLARIS_X86_VM_PREFETCH_SOLARIS_X86_INLINE_HPP 27 28 #include "runtime/prefetch.hpp" 29 25 30 extern "C" { 26 31 void _Prefetch_read (void *loc, intx interval); … … 40 45 #endif // AMD64 41 46 } 47 48 #endif // OS_CPU_SOLARIS_X86_VM_PREFETCH_SOLARIS_X86_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_32.il
r278 r309 1 1 // 2 // Copyright (c) 2003, 20 09, Oracle and/or its affiliates. All rights reserved.2 // Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. 3 3 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 // … … 105 105 .end 106 106 107 // Support for void Atomic::load(volatile jlong* src, volatile jlong* dest). 108 .inline _Atomic_load_long,2 107 // Support for jlong Atomic::load and Atomic::store. 108 // void _Atomic_move_long(volatile jlong* src, volatile jlong* dst) 109 .inline _Atomic_move_long,2 109 110 movl 0(%esp), %eax // src 110 111 fildll (%eax) -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_32.s
r278 r309 1 1 // 2 // Copyright (c) 2004, 20 07, Oracle and/or its affiliates. All rights reserved.2 // Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 // -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_64.il
r278 r309 1 1 // 2 // Copyright (c) 2004, 20 09, Oracle and/or its affiliates. All rights reserved.2 // Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 // -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/threadLS_solaris_x86.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1998, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_threadLS_solaris_x86.cpp.incl" 25 #include "precompiled.hpp" 26 #include "runtime/threadLocalStorage.hpp" 27 #include "thread_solaris.inline.hpp" 27 28 28 29 #ifdef AMD64 -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/threadLS_solaris_x86.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1998, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_SOLARIS_X86_VM_THREADLS_SOLARIS_X86_HPP 26 #define OS_CPU_SOLARIS_X86_VM_THREADLS_SOLARIS_X86_HPP 24 27 25 28 // Processor dependent parts of ThreadLocalStorage … … 79 82 // Java Thread 80 83 static inline Thread* thread(); 84 85 #endif // OS_CPU_SOLARIS_X86_VM_THREADLS_SOLARIS_X86_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/thread_solaris_x86.cpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_thread_solaris_x86.cpp.incl" 25 #include "precompiled.hpp" 26 #include "runtime/frame.inline.hpp" 27 #include "thread_solaris.inline.hpp" 27 28 28 29 // For Forte Analyzer AsyncGetCallTrace profiling support - thread is -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/thread_solaris_x86.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_SOLARIS_X86_VM_THREAD_SOLARIS_X86_HPP 26 #define OS_CPU_SOLARIS_X86_VM_THREAD_SOLARIS_X86_HPP 24 27 25 28 private: … … 58 61 static void enable_register_stack_guard() {} 59 62 static void disable_register_stack_guard() {} 63 64 #endif // OS_CPU_SOLARIS_X86_VM_THREAD_SOLARIS_X86_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/vmStructs_solaris_x86.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2000, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_SOLARIS_X86_VM_VMSTRUCTS_SOLARIS_X86_HPP 26 #define OS_CPU_SOLARIS_X86_VM_VMSTRUCTS_SOLARIS_X86_HPP 24 27 25 28 // These are the OS and CPU-specific fields, types and integer … … 58 61 /* This must be the last entry, and must be present */ \ 59 62 last_entry() 63 64 #endif // OS_CPU_SOLARIS_X86_VM_VMSTRUCTS_SOLARIS_X86_HPP -
trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/vm_version_solaris_x86.cpp
r278 r309 1 1 /* 2 * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 # include "incls/_precompiled.incl" 26 # include "incls/_vm_version_solaris_x86.cpp.incl" 25 #include "precompiled.hpp" 26 #include "runtime/os.hpp" 27 #include "vm_version_x86.hpp" 28 -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/assembler_windows_x86.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_assembler_windows_x86.cpp.incl" 25 #include "precompiled.hpp" 26 #include "asm/assembler.hpp" 27 #include "assembler_x86.inline.hpp" 28 #include "runtime/os.hpp" 29 #include "runtime/threadLocalStorage.hpp" 27 30 28 31 -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/atomic_windows_x86.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 05, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_WINDOWS_X86_VM_ATOMIC_WINDOWS_X86_INLINE_HPP 26 #define OS_CPU_WINDOWS_X86_VM_ATOMIC_WINDOWS_X86_INLINE_HPP 27 25 28 #ifdef __EMX__ 26 29 … … 28 31 29 32 #else // __EMX__ 33 34 #include "orderAccess_windows_x86.inline.hpp" 35 #include "runtime/atomic.hpp" 36 #include "runtime/os.hpp" 37 #include "vm_version_x86.hpp" 30 38 31 39 // The following alternative implementations are needed because … … 136 144 } 137 145 146 inline jlong Atomic::load(volatile jlong* src) { return *src; } 147 138 148 #else // !AMD64 139 149 140 //inline void Atomic::store (jlong store_value, jlong* dest) { *dest = store_value; }141 //inline void Atomic::store (jlong store_value, volatile jlong* dest) { *dest = store_value; }142 150 inline jint Atomic::add (jint add_value, volatile jint* dest) { 143 151 int mp = os::is_MP(); … … 253 261 return (void*)cmpxchg((jint)exchange_value, (volatile jint*)dest, (jint)compare_value); 254 262 } 263 264 inline jlong Atomic::load(volatile jlong* src) { 265 volatile jlong dest; 266 volatile jlong* pdest = &dest; 267 __asm { 268 mov eax, src 269 fild qword ptr [eax] 270 mov eax, pdest 271 fistp qword ptr [eax] 272 } 273 return dest; 274 } 275 276 inline void Atomic::store(jlong store_value, volatile jlong* dest) { 277 volatile jlong* src = &store_value; 278 __asm { 279 mov eax, src 280 fild qword ptr [eax] 281 mov eax, dest 282 fistp qword ptr [eax] 283 } 284 } 285 286 inline void Atomic::store(jlong store_value, jlong* dest) { 287 Atomic::store(store_value, (volatile jlong*)dest); 288 } 289 255 290 #endif // AMD64 256 291 … … 258 293 259 294 #endif // __EMX__ 295 296 #endif // OS_CPU_WINDOWS_X86_VM_ATOMIC_WINDOWS_X86_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/bytes_windows_x86.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_WINDOWS_X86_VM_BYTES_WINDOWS_X86_INLINE_HPP 26 #define OS_CPU_WINDOWS_X86_VM_BYTES_WINDOWS_X86_INLINE_HPP 24 27 25 28 #ifdef __EMX__ … … 89 92 90 93 #endif // __EMX__ 94 95 #endif // OS_CPU_WINDOWS_X86_VM_BYTES_WINDOWS_X86_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/copy_windows_x86.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 20 04, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_WINDOWS_X86_VM_COPY_WINDOWS_X86_INLINE_HPP 26 #define OS_CPU_WINDOWS_X86_VM_COPY_WINDOWS_X86_INLINE_HPP 24 27 25 28 #ifdef __EMX__ … … 173 176 174 177 #endif // __EMX__ 178 179 #endif // OS_CPU_WINDOWS_X86_VM_COPY_WINDOWS_X86_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/globals_windows_x86.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2000, 20 09, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_WINDOWS_X86_VM_GLOBALS_WINDOWS_X86_HPP 26 #define OS_CPU_WINDOWS_X86_VM_GLOBALS_WINDOWS_X86_HPP 24 27 25 28 // Sets the default values for platform dependent flags used by the runtime system. … … 47 50 // Only used on 64 bit Windows platforms 48 51 define_pd_global(bool, UseVectoredExceptions, false); 52 53 #endif // OS_CPU_WINDOWS_X86_VM_GLOBALS_WINDOWS_X86_HPP -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/orderAccess_windows_x86.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 201 0, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_WINDOWS_X86_VM_ORDERACCESS_WINDOWS_X86_INLINE_HPP 26 #define OS_CPU_WINDOWS_X86_VM_ORDERACCESS_WINDOWS_X86_INLINE_HPP 27 25 28 #ifdef __EMX__ 26 29 … … 28 31 29 32 #else // __EMX__ 33 34 #include "runtime/atomic.hpp" 35 #include "runtime/orderAccess.hpp" 36 #include "vm_version_x86.hpp" 30 37 31 38 #pragma warning(disable: 4035) // Disables warnings reporting missing return statement … … 66 73 inline jshort OrderAccess::load_acquire(volatile jshort* p) { return *p; } 67 74 inline jint OrderAccess::load_acquire(volatile jint* p) { return *p; } 68 inline jlong OrderAccess::load_acquire(volatile jlong* p) { return *p; }75 inline jlong OrderAccess::load_acquire(volatile jlong* p) { return Atomic::load(p); } 69 76 inline jubyte OrderAccess::load_acquire(volatile jubyte* p) { return *p; } 70 77 inline jushort OrderAccess::load_acquire(volatile jushort* p) { return *p; } 71 78 inline juint OrderAccess::load_acquire(volatile juint* p) { return *p; } 72 inline julong OrderAccess::load_acquire(volatile julong* p) { return *p; }79 inline julong OrderAccess::load_acquire(volatile julong* p) { return Atomic::load((volatile jlong*)p); } 73 80 inline jfloat OrderAccess::load_acquire(volatile jfloat* p) { return *p; } 74 81 inline jdouble OrderAccess::load_acquire(volatile jdouble* p) { return *p; } … … 81 88 inline void OrderAccess::release_store(volatile jshort* p, jshort v) { *p = v; } 82 89 inline void OrderAccess::release_store(volatile jint* p, jint v) { *p = v; } 83 inline void OrderAccess::release_store(volatile jlong* p, jlong v) { *p = v; }90 inline void OrderAccess::release_store(volatile jlong* p, jlong v) { Atomic::store(v, p); } 84 91 inline void OrderAccess::release_store(volatile jubyte* p, jubyte v) { *p = v; } 85 92 inline void OrderAccess::release_store(volatile jushort* p, jushort v) { *p = v; } 86 93 inline void OrderAccess::release_store(volatile juint* p, juint v) { *p = v; } 87 inline void OrderAccess::release_store(volatile julong* p, julong v) { *p = v; }94 inline void OrderAccess::release_store(volatile julong* p, julong v) { Atomic::store((jlong)v, (volatile jlong*)p); } 88 95 inline void OrderAccess::release_store(volatile jfloat* p, jfloat v) { *p = v; } 89 96 inline void OrderAccess::release_store(volatile jdouble* p, jdouble v) { *p = v; } … … 189 196 } 190 197 191 inline void OrderAccess::release_store_fence(volatile jlong* p, jlong v) { *p = v; fence(); }198 inline void OrderAccess::release_store_fence(volatile jlong* p, jlong v) { release_store(p, v); fence(); } 192 199 193 200 inline void OrderAccess::release_store_fence(volatile jubyte* p, jubyte v) { release_store_fence((volatile jbyte*)p, (jbyte)v); } … … 217 224 218 225 #endif // __EMX__ 226 227 #endif // OS_CPU_WINDOWS_X86_VM_ORDERACCESS_WINDOWS_X86_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/os_windows_x86.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 09, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 // do not include precompiled header file 26 # include "incls/_os_windows_x86.cpp.incl" 25 // no precompiled headers 26 #include "assembler_x86.inline.hpp" 27 #include "classfile/classLoader.hpp" 28 #include "classfile/systemDictionary.hpp" 29 #include "classfile/vmSymbols.hpp" 30 #include "code/icBuffer.hpp" 31 #include "code/vtableStubs.hpp" 32 #include "interpreter/interpreter.hpp" 33 #include "jvm_windows.h" 34 #include "memory/allocation.inline.hpp" 35 #include "mutex_windows.inline.hpp" 36 #include "nativeInst_x86.hpp" 37 #include "os_share_windows.hpp" 38 #include "prims/jniFastGetField.hpp" 39 #include "prims/jvm.h" 40 #include "prims/jvm_misc.hpp" 41 #include "runtime/arguments.hpp" 42 #include "runtime/extendedPC.hpp" 43 #include "runtime/frame.inline.hpp" 44 #include "runtime/interfaceSupport.hpp" 45 #include "runtime/java.hpp" 46 #include "runtime/javaCalls.hpp" 47 #include "runtime/mutexLocker.hpp" 48 #include "runtime/osThread.hpp" 49 #include "runtime/sharedRuntime.hpp" 50 #include "runtime/stubRoutines.hpp" 51 #include "runtime/timer.hpp" 52 #include "thread_windows.inline.hpp" 53 #include "utilities/events.hpp" 54 #include "utilities/vmError.hpp" 55 #ifdef COMPILER1 56 #include "c1/c1_Runtime1.hpp" 57 #endif 58 #ifdef COMPILER2 59 #include "opto/runtime.hpp" 60 #endif 61 27 62 # include "unwind_windows_x86.hpp" 28 63 #undef REG_SP … … 164 199 if (UseVectoredExceptions) return true; 165 200 166 BufferBlob* b = BufferBlob::create("CodeCache Exception Handler", sizeof(DynamicCodeData));167 CodeBuffer cb(b ->instructions_begin(), b->instructions_size());201 BufferBlob* blob = BufferBlob::create("CodeCache Exception Handler", sizeof(DynamicCodeData)); 202 CodeBuffer cb(blob); 168 203 MacroAssembler* masm = new MacroAssembler(&cb); 169 204 pDCD = (pDynamicCodeData) masm->pc(); … … 406 441 st->print(", RDI=" INTPTR_FORMAT, uc->Rdi); 407 442 st->cr(); 408 st->print( "R8 =" INTPTR_FORMAT,uc->R8);409 st->print(", R9 =" INTPTR_FORMAT,uc->R9);443 st->print( "R8 =" INTPTR_FORMAT, uc->R8); 444 st->print(", R9 =" INTPTR_FORMAT, uc->R9); 410 445 st->print(", R10=" INTPTR_FORMAT, uc->R10); 411 446 st->print(", R11=" INTPTR_FORMAT, uc->R11); … … 418 453 st->print( "RIP=" INTPTR_FORMAT, uc->Rip); 419 454 st->print(", EFLAGS=" INTPTR_FORMAT, uc->EFlags); 420 421 st->cr();422 st->cr();423 424 st->print_cr("Register to memory mapping:");425 st->cr();426 427 // this is only for the "general purpose" registers428 429 st->print_cr("RAX=" INTPTR_FORMAT, uc->Rax);430 print_location(st, uc->Rax);431 st->cr();432 st->print_cr("RBX=" INTPTR_FORMAT, uc->Rbx);433 print_location(st, uc->Rbx);434 st->cr();435 st->print_cr("RCX=" INTPTR_FORMAT, uc->Rcx);436 print_location(st, uc->Rcx);437 st->cr();438 st->print_cr("RDX=" INTPTR_FORMAT, uc->Rdx);439 print_location(st, uc->Rdx);440 st->cr();441 st->print_cr("RSP=" INTPTR_FORMAT, uc->Rsp);442 print_location(st, uc->Rsp);443 st->cr();444 st->print_cr("RBP=" INTPTR_FORMAT, uc->Rbp);445 print_location(st, uc->Rbp);446 st->cr();447 st->print_cr("RSI=" INTPTR_FORMAT, uc->Rsi);448 print_location(st, uc->Rsi);449 st->cr();450 st->print_cr("RDI=" INTPTR_FORMAT, uc->Rdi);451 print_location(st, uc->Rdi);452 st->cr();453 st->print_cr("R8 =" INTPTR_FORMAT, uc->R8);454 print_location(st, uc->R8);455 st->cr();456 st->print_cr("R9 =" INTPTR_FORMAT, uc->R9);457 print_location(st, uc->R9);458 st->cr();459 st->print_cr("R10=" INTPTR_FORMAT, uc->R10);460 print_location(st, uc->R10);461 st->cr();462 st->print_cr("R11=" INTPTR_FORMAT, uc->R11);463 print_location(st, uc->R11);464 st->cr();465 st->print_cr("R12=" INTPTR_FORMAT, uc->R12);466 print_location(st, uc->R12);467 st->cr();468 st->print_cr("R13=" INTPTR_FORMAT, uc->R13);469 print_location(st, uc->R13);470 st->cr();471 st->print_cr("R14=" INTPTR_FORMAT, uc->R14);472 print_location(st, uc->R14);473 st->cr();474 st->print_cr("R15=" INTPTR_FORMAT, uc->R15);475 print_location(st, uc->R15);476 455 #else 477 456 st->print( "EAX=" INTPTR_FORMAT, uc->Eax); … … 487 466 st->print( "EIP=" INTPTR_FORMAT, uc->Eip); 488 467 st->print(", EFLAGS=" INTPTR_FORMAT, uc->EFlags); 489 490 st->cr();491 st->cr();492 493 st->print_cr("Register to memory mapping:");494 st->cr();495 496 // this is only for the "general purpose" registers497 498 st->print_cr("EAX=" INTPTR_FORMAT, uc->Eax);499 print_location(st, uc->Eax);500 st->cr();501 st->print_cr("EBX=" INTPTR_FORMAT, uc->Ebx);502 print_location(st, uc->Ebx);503 st->cr();504 st->print_cr("ECX=" INTPTR_FORMAT, uc->Ecx);505 print_location(st, uc->Ecx);506 st->cr();507 st->print_cr("EDX=" INTPTR_FORMAT, uc->Edx);508 print_location(st, uc->Edx);509 st->cr();510 st->print_cr("ESP=" INTPTR_FORMAT, uc->Esp);511 print_location(st, uc->Esp);512 st->cr();513 st->print_cr("EBP=" INTPTR_FORMAT, uc->Ebp);514 print_location(st, uc->Ebp);515 st->cr();516 st->print_cr("ESI=" INTPTR_FORMAT, uc->Esi);517 print_location(st, uc->Esi);518 st->cr();519 st->print_cr("EDI=" INTPTR_FORMAT, uc->Edi);520 print_location(st, uc->Edi);521 468 #endif // AMD64 522 469 st->cr(); … … 533 480 address pc = (address)uc->REG_PC; 534 481 st->print_cr("Instructions: (pc=" PTR_FORMAT ")", pc); 535 print_hex_dump(st, pc - 16, pc + 16, sizeof(char)); 482 print_hex_dump(st, pc - 32, pc + 32, sizeof(char)); 483 st->cr(); 484 } 485 486 487 void os::print_register_info(outputStream *st, void *context) { 488 if (context == NULL) return; 489 490 CONTEXT* uc = (CONTEXT*)context; 491 492 st->print_cr("Register to memory mapping:"); 493 st->cr(); 494 495 // this is only for the "general purpose" registers 496 497 #ifdef AMD64 498 st->print("RAX="); print_location(st, uc->Rax); 499 st->print("RBX="); print_location(st, uc->Rbx); 500 st->print("RCX="); print_location(st, uc->Rcx); 501 st->print("RDX="); print_location(st, uc->Rdx); 502 st->print("RSP="); print_location(st, uc->Rsp); 503 st->print("RBP="); print_location(st, uc->Rbp); 504 st->print("RSI="); print_location(st, uc->Rsi); 505 st->print("RDI="); print_location(st, uc->Rdi); 506 st->print("R8 ="); print_location(st, uc->R8); 507 st->print("R9 ="); print_location(st, uc->R9); 508 st->print("R10="); print_location(st, uc->R10); 509 st->print("R11="); print_location(st, uc->R11); 510 st->print("R12="); print_location(st, uc->R12); 511 st->print("R13="); print_location(st, uc->R13); 512 st->print("R14="); print_location(st, uc->R14); 513 st->print("R15="); print_location(st, uc->R15); 514 #else 515 st->print("EAX="); print_location(st, uc->Eax); 516 st->print("EBX="); print_location(st, uc->Ebx); 517 st->print("ECX="); print_location(st, uc->Ecx); 518 st->print("EDX="); print_location(st, uc->Edx); 519 st->print("ESP="); print_location(st, uc->Esp); 520 st->print("EBP="); print_location(st, uc->Ebp); 521 st->print("ESI="); print_location(st, uc->Esi); 522 st->print("EDI="); print_location(st, uc->Edi); 523 #endif 524 536 525 st->cr(); 537 526 } -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/os_windows_x86.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 09, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_WINDOWS_X86_VM_OS_WINDOWS_X86_HPP 26 #define OS_CPU_WINDOWS_X86_VM_OS_WINDOWS_X86_HPP 24 27 25 28 // … … 57 60 58 61 static bool register_code_area(char *low, char *high); 62 63 #endif // OS_CPU_WINDOWS_X86_VM_OS_WINDOWS_X86_HPP -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/prefetch_windows_x86.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_WINDOWS_X86_VM_PREFETCH_WINDOWS_X86_INLINE_HPP 26 #define OS_CPU_WINDOWS_X86_VM_PREFETCH_WINDOWS_X86_INLINE_HPP 27 28 #include "runtime/prefetch.hpp" 29 25 30 inline void Prefetch::read (void *loc, intx interval) {} 26 31 inline void Prefetch::write(void *loc, intx interval) {} 32 33 #endif // OS_CPU_WINDOWS_X86_VM_PREFETCH_WINDOWS_X86_INLINE_HPP -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/threadLS_windows_x86.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1998, 20 03, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "precompiled.hpp" 26 #include "runtime/threadLocalStorage.hpp" 27 #include "thread_windows.inline.hpp" 28 25 29 // Provides an entry point we can link against and 26 30 // a buffer we can emit code into. The buffer is 27 31 // filled by ThreadLocalStorage::generate_code_for_get_thread 28 32 // and called from ThreadLocalStorage::thread() 29 30 #include "incls/_precompiled.incl"31 #include "incls/_threadLS_windows_x86.cpp.incl"32 33 33 34 int ThreadLocalStorage::_thread_ptr_offset = 0; -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/threadLS_windows_x86.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1998, 20 03, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_CPU_WINDOWS_X86_VM_THREADLS_WINDOWS_X86_HPP 26 #define OS_CPU_WINDOWS_X86_VM_THREADLS_WINDOWS_X86_HPP 27 25 28 // Processor dependent parts of ThreadLocalStorage 26 29 … … 43 46 44 47 static inline int get_thread_ptr_offset() { return _thread_ptr_offset; } 48 49 #endif // OS_CPU_WINDOWS_X86_VM_THREADLS_WINDOWS_X86_HPP -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/thread_windows_x86.cpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 20 05, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_thread_windows_x86.cpp.incl" 25 #include "precompiled.hpp" 26 #include "runtime/frame.inline.hpp" 27 #include "thread_windows.inline.hpp" 27 28 28 29 // For Forte Analyzer AsyncGetCallTrace profiling support - thread is -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/thread_windows_x86.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_WINDOWS_X86_VM_THREAD_WINDOWS_X86_HPP 26 #define OS_CPU_WINDOWS_X86_VM_THREAD_WINDOWS_X86_HPP 24 27 25 28 private: … … 61 64 static void enable_register_stack_guard() {} 62 65 static void disable_register_stack_guard() {} 66 67 #endif // OS_CPU_WINDOWS_X86_VM_THREAD_WINDOWS_X86_HPP -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/unwind_windows_x86.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2004, 20 09, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_WINDOWS_X86_VM_UNWIND_WINDOWS_X86_HPP 26 #define OS_CPU_WINDOWS_X86_VM_UNWIND_WINDOWS_X86_HPP 24 27 25 28 … … 82 85 83 86 #endif // AMD64 87 88 #endif // OS_CPU_WINDOWS_X86_VM_UNWIND_WINDOWS_X86_HPP -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/vmStructs_windows_x86.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2000, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_CPU_WINDOWS_X86_VM_VMSTRUCTS_WINDOWS_X86_HPP 26 #define OS_CPU_WINDOWS_X86_VM_VMSTRUCTS_WINDOWS_X86_HPP 24 27 25 28 // These are the OS and CPU-specific fields, types and integer … … 53 56 /* This must be the last entry, and must be present */ \ 54 57 last_entry() 58 59 #endif // OS_CPU_WINDOWS_X86_VM_VMSTRUCTS_WINDOWS_X86_HPP -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/vm_version_windows_x86.cpp
r278 r309 1 1 /* 2 * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 # include "incls/_precompiled.incl" 26 # include "incls/_vm_version_windows_x86.cpp.incl" 25 #include "precompiled.hpp" 26 #include "runtime/os.hpp" 27 #include "vm_version_x86.hpp" 28 -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/windows_x86_32.ad
r278 r309 1 1 // 2 // Copyright (c) 1999, 20 06, Oracle and/or its affiliates. All rights reserved.2 // Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 // … … 142 142 // emit an interrupt that is caught by the debugger 143 143 void emit_break(CodeBuffer &cbuf) { 144 *(cbuf.code_end()) = (unsigned char)(0xcc); 145 cbuf.set_code_end(cbuf.code_end() + 1); 144 cbuf.insts()->emit_int8((unsigned char) 0xcc); 146 145 } 147 146 -
trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/windows_x86_64.ad
r278 r309 1 1 // 2 // Copyright (c) 2003, 20 06, Oracle and/or its affiliates. All rights reserved.2 // Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 // … … 145 145 // emit an interrupt that is caught by the debugger 146 146 void emit_break(CodeBuffer &cbuf) { 147 *(cbuf.code_end()) = (unsigned char)(0xcc); 148 cbuf.set_code_end(cbuf.code_end() + 1); 147 cbuf.insts()->emit_int8((unsigned char) 0xcc); 149 148 } 150 149
Note:
See TracChangeset
for help on using the changeset viewer.