Skip to content

Commit

Permalink
Merge pull request #24 from vitordelima/ppc64le
Browse files Browse the repository at this point in the history
PowerPC64 support
  • Loading branch information
headius committed Mar 16, 2015
2 parents 46fdd7f + f9159b5 commit 6d8cdc0
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 1 deletion.
2 changes: 1 addition & 1 deletion libtest/Benchmark.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ void returnVoid() {
}

void returnVoidI(int arg) {

(void)(arg);
}
int returnInt() {
return 0;
Expand Down
1 change: 1 addition & 0 deletions libtest/PointerTest.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ void
ptr_reverse_l5(long* l1, long* l2, long* l3, long* l4, long* l5)
{
swap(l1, l5);
(void)(l3);
swap(l2, l4);
}

Expand Down
6 changes: 6 additions & 0 deletions src/main/java/jnr/ffi/Platform.java
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,9 @@ public enum CPU {
/** 64 bit Power PC */
PPC64,

/** 64 bit Power PC little endian */
PPC64LE,

/** 32 bit Sun sparc */
SPARC,

Expand Down Expand Up @@ -197,6 +200,8 @@ private static CPU determineCPU() {
return CPU.PPC;
} else if (equalsIgnoreCase("ppc64", archString) || equalsIgnoreCase("powerpc64", archString)) {
return CPU.PPC64;
} else if (equalsIgnoreCase("ppc64le", archString) || equalsIgnoreCase("powerpc64le", archString)) {
return CPU.PPC64LE;
} else if (equalsIgnoreCase("s390", archString) || equalsIgnoreCase("s390x", archString)) {
return CPU.S390X;
}
Expand Down Expand Up @@ -252,6 +257,7 @@ private static int calculateAddressSize(CPU cpu) {
break;
case X86_64:
case PPC64:
case PPC64LE:
case SPARCV9:
case S390X:
dataModel = 64;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package jnr.ffi.provider.jffi.platform.ppc64le.linux;

import jnr.ffi.NativeType;
import jnr.ffi.TypeAlias;

import java.util.EnumMap;
import java.util.Map;

public final class TypeAliases {
public static final Map<TypeAlias, jnr.ffi.NativeType> ALIASES = buildTypeMap();
private static Map<TypeAlias, jnr.ffi.NativeType> buildTypeMap() {
Map<TypeAlias, jnr.ffi.NativeType> m = new EnumMap<TypeAlias, jnr.ffi.NativeType>(TypeAlias.class);
m.put(TypeAlias.int8_t, NativeType.SCHAR);
m.put(TypeAlias.u_int8_t, NativeType.UCHAR);
m.put(TypeAlias.int16_t, NativeType.SSHORT);
m.put(TypeAlias.u_int16_t, NativeType.USHORT);
m.put(TypeAlias.int32_t, NativeType.SINT);
m.put(TypeAlias.u_int32_t, NativeType.UINT);
m.put(TypeAlias.int64_t, NativeType.SLONG);
m.put(TypeAlias.u_int64_t, NativeType.ULONG);
m.put(TypeAlias.intptr_t, NativeType.SLONG);
m.put(TypeAlias.uintptr_t, NativeType.ULONG);
m.put(TypeAlias.caddr_t, NativeType.ADDRESS);
m.put(TypeAlias.dev_t, NativeType.ULONG);
m.put(TypeAlias.blkcnt_t, NativeType.SLONG);
m.put(TypeAlias.blksize_t, NativeType.SLONG);
m.put(TypeAlias.gid_t, NativeType.UINT);
m.put(TypeAlias.in_addr_t, NativeType.UINT);
m.put(TypeAlias.in_port_t, NativeType.USHORT);
m.put(TypeAlias.ino_t, NativeType.ULONG);
m.put(TypeAlias.ino64_t, NativeType.ULONG);
m.put(TypeAlias.key_t, NativeType.SINT);
m.put(TypeAlias.mode_t, NativeType.UINT);
m.put(TypeAlias.nlink_t, NativeType.ULONG);
m.put(TypeAlias.id_t, NativeType.UINT);
m.put(TypeAlias.pid_t, NativeType.SINT);
m.put(TypeAlias.off_t, NativeType.SLONG);
m.put(TypeAlias.swblk_t, NativeType.SLONG);
m.put(TypeAlias.uid_t, NativeType.UINT);
m.put(TypeAlias.clock_t, NativeType.SLONG);
m.put(TypeAlias.size_t, NativeType.ULONG);
m.put(TypeAlias.ssize_t, NativeType.SLONG);
m.put(TypeAlias.time_t, NativeType.SLONG);
m.put(TypeAlias.fsblkcnt_t, NativeType.ULONG);
m.put(TypeAlias.fsfilcnt_t, NativeType.ULONG);
m.put(TypeAlias.sa_family_t, NativeType.USHORT);
m.put(TypeAlias.socklen_t, NativeType.UINT);
m.put(TypeAlias.rlim_t, NativeType.ULONG);
return m;
}
}

0 comments on commit 6d8cdc0

Please sign in to comment.