Ignore:
Timestamp:
Jul 15, 2010, 2:46:42 PM (15 years ago)
Author:
dmik
Message:

hotspot/src: Another big bunch of patches to make the windows code build with Odin32/GCC on OS/2.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/os_windows_x86.cpp

    r2 r58  
    5858    if ( ThreadLocalStorage::get_thread_ptr_offset() == 0 ) {
    5959      int thread_ptr_offset;
     60#ifdef __EMX__
     61      __asm__("leal %1, %%eax; "
     62              "subl %%fs:0, %%eax; "
     63              "movl %%eax, %0; "
     64              : "=m"(thread_ptr_offset) : "m"(wrapperthread) : "%eax");
     65#else
    6066      __asm {
    6167        lea eax, dword ptr wrapperthread;
     
    6369        mov thread_ptr_offset, eax
    6470      };
     71#endif     
    6572      ThreadLocalStorage::set_thread_ptr_offset(thread_ptr_offset);
    6673    }
     
    7178    else {
    7279      int test_thread_ptr_offset;
     80#ifdef __EMX__
     81      __asm__("leal %1, %%eax; "
     82              "subl %%fs:0, %%eax; "
     83              "movl %%eax, %0; "
     84              : "=m"(test_thread_ptr_offset) : "m"(wrapperthread) : "%eax");
     85#else
    7386      __asm {
    7487        lea eax, dword ptr wrapperthread;
     
    7689        mov test_thread_ptr_offset, eax
    7790      };
     91#endif
    7892      assert(test_thread_ptr_offset == ThreadLocalStorage::get_thread_ptr_offset(),
    7993             "thread pointer offset from SEH changed");
     
    340354intptr_t* _get_previous_fp() {
    341355  intptr_t **frameptr;
     356#ifdef __EMX__
     357  __asm("movl %%ebp, %0" : "=m"(frameptr));
     358#else
    342359  __asm {
    343360    mov frameptr, ebp
    344361  };
     362#endif 
    345363  return *frameptr;
    346364}
     
    423441extern "C" int SafeFetch32 (int * adr, int Err) {
    424442   int rv = Err ;
    425    _try {
     443   __try {
    426444       rv = *((volatile int *) adr) ;
    427445   } __except(EXCEPTION_EXECUTE_HANDLER) {
     
    432450extern "C" intptr_t SafeFetchN (intptr_t * adr, intptr_t Err) {
    433451   intptr_t rv = Err ;
    434    _try {
     452   __try {
    435453       rv = *((volatile intptr_t *) adr) ;
    436454   } __except(EXCEPTION_EXECUTE_HANDLER) {
     
    446464   // On systems that don't support pause a rep:nop
    447465   // is executed as a nop.  The rep: prefix is ignored.
     466#ifdef __EMX__
     467   __asm__("pause; ");
     468#else
    448469   _asm {
    449470      pause ;
    450471   };
     472#endif
    451473   return 1 ;
    452474#endif // AMD64
     
    457479#ifndef AMD64
    458480  int fpu_cntrl_word = StubRoutines::fpu_cntrl_wrd_std();
     481#ifdef __EMX__
     482  __asm__("fldcw %0; " : : "m"(fpu_cntrl_word));
     483#else 
    459484  __asm fldcw fpu_cntrl_word;
     485#endif 
    460486#endif // !AMD64
    461487}
Note: See TracChangeset for help on using the changeset viewer.