src/os_cpu/solaris_x86/vm/solaris_x86_32.il

Print this page
rev 3149 : 7147740: add assertions to check stack alignment on VM entry from generated code (x64)
Summary: check stack alignment on VM entry on x64.
Reviewed-by:


  20 // or visit www.oracle.com if you need additional information or have any
  21 // questions.
  22 //  
  23 //
  24 
  25 
  26   // Support for u8 os::setup_fpu()
  27       .inline _solaris_raw_setup_fpu,1
  28       movl     0(%esp), %eax
  29       fldcw    (%eax)
  30       .end
  31 
  32   // The argument size of each inline directive is ignored by the compiler
  33   // and is set to 0 for compatibility reason.
  34 
  35   // Get the raw thread ID from %gs:0
  36       .inline _raw_thread_id,0
  37       movl     %gs:0, %eax 
  38       .end
  39 






  40   // Get current fp
  41       .inline _get_current_fp,0
  42       .volatile
  43       movl     %ebp, %eax 
  44       .end
  45 
  46   // Support for os::rdtsc()
  47       .inline _raw_rdtsc,0
  48       rdtsc
  49       .end
  50 
  51   // Support for jint Atomic::add(jint inc, volatile jint* dest)
  52   // An additional bool (os::is_MP()) is passed as the last argument.
  53       .inline _Atomic_add,3
  54       movl     0(%esp), %eax   // inc
  55       movl     4(%esp), %edx   // dest
  56       movl     %eax, %ecx
  57       cmpl     $0, 8(%esp)     // MP test
  58       jne      1f
  59       xaddl    %eax, (%edx)




  20 // or visit www.oracle.com if you need additional information or have any
  21 // questions.
  22 //  
  23 //
  24 
  25 
  26   // Support for u8 os::setup_fpu()
  27       .inline _solaris_raw_setup_fpu,1
  28       movl     0(%esp), %eax
  29       fldcw    (%eax)
  30       .end
  31 
  32   // The argument size of each inline directive is ignored by the compiler
  33   // and is set to 0 for compatibility reason.
  34 
  35   // Get the raw thread ID from %gs:0
  36       .inline _raw_thread_id,0
  37       movl     %gs:0, %eax 
  38       .end
  39 
  40   // Get current sp
  41       .inline _get_current_sp,0
  42       .volatile
  43       movl     %esp, %eax 
  44       .end
  45 
  46   // Get current fp
  47       .inline _get_current_fp,0
  48       .volatile
  49       movl     %ebp, %eax 
  50       .end
  51 
  52   // Support for os::rdtsc()
  53       .inline _raw_rdtsc,0
  54       rdtsc
  55       .end
  56 
  57   // Support for jint Atomic::add(jint inc, volatile jint* dest)
  58   // An additional bool (os::is_MP()) is passed as the last argument.
  59       .inline _Atomic_add,3
  60       movl     0(%esp), %eax   // inc
  61       movl     4(%esp), %edx   // dest
  62       movl     %eax, %ecx
  63       cmpl     $0, 8(%esp)     // MP test
  64       jne      1f
  65       xaddl    %eax, (%edx)