$NetBSD: patch-bi,v 1.2 2018/12/12 14:22:11 ryoon Exp $

DragonFly support.

--- hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp.orig	2018-12-09 09:51:15.000000000 +0000
+++ hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp
@@ -96,7 +96,7 @@
 #define SPELL_REG_FP "ebp"
 #endif // AMD64
 
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__DragonFly__)
 # define context_trapno uc_mcontext.mc_trapno
 # ifdef AMD64
 #  define context_pc uc_mcontext.mc_rip
@@ -283,13 +283,8 @@ address os::current_stack_pointer() {
   register void *esp;
   __asm__("mov %%" SPELL_REG_SP ", %0" : "=r" (esp));
   return (address) esp;
-#elif defined(SPARC_WORKS)
-  register void *esp;
-  __asm__("mov %%" SPELL_REG_SP ", %0" : "=r" (esp));
-  return (address) ((char*)esp + sizeof(long)*2);
 #else
-  register void *esp __asm__ (SPELL_REG_SP);
-  return (address) esp;
+  return (address)__builtin_frame_address(0);
 #endif
 }
 
@@ -366,13 +361,7 @@ frame os::get_sender_for_C_frame(frame* 
 }
 
 intptr_t* _get_previous_fp() {
-#if defined(SPARC_WORKS) || defined(__clang__) || defined(__llvm__)
-  register intptr_t **ebp;
-  __asm__("mov %%" SPELL_REG_FP ", %0" : "=r" (ebp));
-#else
-  register intptr_t **ebp __asm__ (SPELL_REG_FP);
-#endif
-  return (intptr_t*) *ebp;   // we want what it points to.
+  return (intptr_t *)__builtin_frame_address(1);
 }
 
 
