diff -Nur freenet-cross.orig/contrib/fec/lib/native.properties freenet-cross/contrib/fec/lib/native.properties
--- freenet-cross.orig/contrib/fec/lib/native.properties	2008-03-23 09:50:46.000000000 +0100
+++ freenet-cross/contrib/fec/lib/native.properties	2008-03-23 10:06:09.000000000 +0100
@@ -1,4 +1,4 @@
-com.onionnetworks.native.keys=fec8-linux-x86,fec16-linux-x86,fec8-linux-x86_64,fec16-linux-x86_64,fec8-win32-x86,fec16-win32-x86,fec8-linux-mips,fec16-linux-mips,fec8-linux-mipsel,fec16-linux-mipsel
+com.onionnetworks.native.keys=fec8-linux-x86,fec16-linux-x86,fec8-linux-x86_64,fec16-linux-x86_64,fec8-win32-x86,fec16-win32-x86,fec8-linux-mips,fec16-linux-mips,fec8-linux-mipsel,fec16-linux-mipsel,fec8-linux-ppc,fec16-linux-ppc,fec8-linux-ppc64,fec16-linux-ppc64
 
 com.onionnetworks.native.fec8-linux-x86.name=fec8
 com.onionnetworks.native.fec8-linux-x86.osarch=linux-x86
@@ -39,3 +39,19 @@
 com.onionnetworks.native.fec16-linux-mipsel.name=fec16
 com.onionnetworks.native.fec16-linux-mipsel.osarch=linux-mipsel
 com.onionnetworks.native.fec16-linux-mipsel.path=lib/linux/mipsel/libfec16.so
+
+com.onionnetworks.native.fec8-linux-ppc.name=fec8
+com.onionnetworks.native.fec8-linux-ppc.osarch=linux-ppc
+com.onionnetworks.native.fec8-linux-ppc.path=lib/linux/ppc/libfec8.so
+
+com.onionnetworks.native.fec16-linux-ppc.name=fec16
+com.onionnetworks.native.fec16-linux-ppc.osarch=linux-ppc
+com.onionnetworks.native.fec16-linux-ppc.path=lib/linux/ppc/libfec16.so
+
+com.onionnetworks.native.fec8-linux-ppc64.name=fec8
+com.onionnetworks.native.fec8-linux-ppc64.osarch=linux-ppc64
+com.onionnetworks.native.fec8-linux-ppc64.path=lib/linux/ppc64/libfec8.so
+
+com.onionnetworks.native.fec16-linux-ppc64.name=fec16
+com.onionnetworks.native.fec16-linux-ppc64.osarch=linux-ppc64
+com.onionnetworks.native.fec16-linux-ppc64.path=lib/linux/ppc64/libfec16.so
diff -Nur freenet-cross.orig/contrib/wrapper/src/java/org/tanukisoftware/wrapper/WrapperManager.java freenet-cross/contrib/wrapper/src/java/org/tanukisoftware/wrapper/WrapperManager.java
--- freenet-cross.orig/contrib/wrapper/src/java/org/tanukisoftware/wrapper/WrapperManager.java	2008-03-23 09:50:46.000000000 +0100
+++ freenet-cross/contrib/wrapper/src/java/org/tanukisoftware/wrapper/WrapperManager.java	2008-03-23 10:07:41.000000000 +0100
@@ -1087,10 +1087,14 @@
             {
                 arch = "sparc";
             }
-            else if ( arch.equals( "power" ) || arch.equals( "powerpc" ) || arch.equals( "ppc64" ) )
+            else if ( arch.equals( "power" ) || arch.equals( "powerpc" ) )
             {
                 arch = "ppc";
             }
+            else if ( arch.equals( "power64" ) || arch.equals( "powerpc64" ) )
+            {
+                arch = "ppc64";
+            }
             else if ( arch.startsWith( "pa_risc" ) || arch.startsWith( "pa-risc" ) )
             {
                 arch = "parisc";
diff -Nur freenet-cross.orig/freenet/src/freenet/support/LibraryLoader.java freenet-cross/freenet/src/freenet/support/LibraryLoader.java
--- freenet-cross.orig/freenet/src/freenet/support/LibraryLoader.java	2008-03-23 09:50:46.000000000 +0100
+++ freenet-cross/freenet/src/freenet/support/LibraryLoader.java	2008-03-23 10:04:14.000000000 +0100
@@ -25,6 +25,8 @@
 			arch = "amd64";
 		} else if(System.getProperty("os.arch").toLowerCase().matches("(ppc)")) {
 			arch = "ppc";
+		} else if(System.getProperty("os.arch").toLowerCase().matches("(ppc64)")) {
+			arch = "ppc64";
 		} else if(System.getProperty("os.arch").toLowerCase().matches("(mips)")) {
 			ByteOrder b = ByteOrder.nativeOrder();
 			if (b.equals(ByteOrder.BIG_ENDIAN)) {
diff -Nur freenet-cross.orig/freenet/src/net/i2p/util/NativeBigInteger.java freenet-cross/freenet/src/net/i2p/util/NativeBigInteger.java
--- freenet-cross.orig/freenet/src/net/i2p/util/NativeBigInteger.java	2008-03-23 09:50:46.000000000 +0100
+++ freenet-cross/freenet/src/net/i2p/util/NativeBigInteger.java	2008-03-23 10:08:56.000000000 +0100
@@ -119,6 +119,7 @@
 	private final static String JBIGI_OPTIMIZATION_PENTIUM3 = "pentium3";
 	private final static String JBIGI_OPTIMIZATION_PENTIUM4 = "pentium4";
 	private final static String JBIGI_OPTIMIZATION_PPC = "ppc";
+	private final static String JBIGI_OPTIMIZATION_PPC64 = "ppc64";
 	private final static String JBIGI_OPTIMIZATION_MIPS = "mips";
 	private final static String JBIGI_OPTIMIZATION_MIPSEL = "mipsel";
 	private final static String sCPUType; //The CPU Type to optimize for (one of the above strings)
@@ -140,6 +141,10 @@
 				System.out.println("Detected PowerPC!");
 				return JBIGI_OPTIMIZATION_PPC;
 			}
+			else if(System.getProperty("os.arch").toLowerCase().matches("(ppc64)")) {
+				System.out.println("Detected PowerPC64!");
+				return JBIGI_OPTIMIZATION_PPC64;
+			}
 			else if(System.getProperty("os.arch").toLowerCase().matches("(mips)")) {
 				ByteOrder b = ByteOrder.nativeOrder();
 				if (b.equals(ByteOrder.BIG_ENDIAN)) {
