diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog
index 1c8ce53253c2a55290c01b90f95f73a5f7c2079d..b637a37d0fff138946b122349cfc3c498284c4e6 100644
--- a/boehm-gc/ChangeLog
+++ b/boehm-gc/ChangeLog
@@ -1,3 +1,9 @@
+2007-01-16  Petr Salinger  <Petr.Salinger@seznam.cz>
+
+	* include/private/gcconfig.h: Handle amd64/x86-64 cpu under
+	 GNU/kFreeBSD.
+	* os_dep.c: Likewise.
+
 2007-01-15  Andreas Tobler  <a.tobler@schweiz.org>
 
 	* os_dep.c (defined(MPROTECT_VDB) && defined(DARWIN)): Adjust mail
diff --git a/boehm-gc/include/private/gcconfig.h b/boehm-gc/include/private/gcconfig.h
index ef222323089940e129710cc92ce0db70b82754b6..3e5af3a7b81398d942588c83397711dae9c88e1d 100644
--- a/boehm-gc/include/private/gcconfig.h
+++ b/boehm-gc/include/private/gcconfig.h
@@ -329,6 +329,10 @@
 #   define I386
 #   define mach_type_known
 # endif
+# if defined(FREEBSD) && defined(__x86_64__)
+#   define X86_64
+#   define mach_type_known
+# endif
 # if defined(__NetBSD__) && (defined(i386) || defined(__i386__))
 #   define I386
 #   define mach_type_known
diff --git a/boehm-gc/os_dep.c b/boehm-gc/os_dep.c
index de7cdd57b0df8159bc954e5aea2cd618ec09bb50..540dcba53219a46cc35fb415075a0c6e556c0459 100644
--- a/boehm-gc/os_dep.c
+++ b/boehm-gc/os_dep.c
@@ -84,7 +84,7 @@
 #   define NEED_FIND_LIMIT
 # endif
 
-#if defined(FREEBSD) && (defined(I386) || defined(powerpc) || defined(__powerpc__))
+#if defined(FREEBSD) && (defined(I386) || defined(X86_64) || defined(powerpc) || defined(__powerpc__))
 #  include <machine/trap.h>
 #  if !defined(PCR)
 #    define NEED_FIND_LIMIT
@@ -1392,7 +1392,7 @@ int * etext_addr;
 }
 # endif
 
-# if defined(FREEBSD) && (defined(I386) || defined(powerpc) || defined(__powerpc__)) && !defined(PCR)
+# if defined(FREEBSD) && (defined(I386) || defined(X86_64) || defined(powerpc) || defined(__powerpc__)) && !defined(PCR)
 /* Its unclear whether this should be identical to the above, or 	*/
 /* whether it should apply to non-X86 architectures.			*/
 /* For now we don't assume that there is always an empty page after	*/