[CRIU] [PATCH 02/44] x86: moved x86-specific files into the directory arch/x86.
Alexander Kartashov
alekskartashov at parallels.com
Mon Jan 7 10:04:31 EST 2013
* The following files goes into the directory arch/x86/include/asm unmodified:
- include/atomic.h,
- include/linkage.h,
- include/memcpy_64.h,
- include/types.h,
- include/bitops.h,
- pie/parasite-head-x86-64.S,
- include/processor-flags.h,
- include/syscall-x86-64.def.
* Changed include directives in the source files that include the headers
listed above.
* Modified build scripts to reflect the source moves.
Signed-off-by: Alexander Kartashov <alekskartashov at parallels.com>
---
Makefile | 5 +-
arch/x86/Makefile | 3 +-
arch/x86/include/asm/atomic.h | 60 ++++++++
arch/x86/include/asm/bitops.h | 118 +++++++++++++++
arch/x86/include/asm/linkage.h | 24 ++++
arch/x86/include/asm/memcpy_64.h | 22 +++
arch/x86/include/asm/processor-flags.h | 28 ++++
arch/x86/include/asm/types.h | 248 ++++++++++++++++++++++++++++++++
arch/x86/parasite-head.S | 24 ++++
arch/x86/syscall-common-x86-64.S | 2 +-
arch/x86/syscall-x86-64.def | 76 ++++++++++
cpu.c | 4 +-
cr-dump.c | 2 +-
cr-restore.c | 2 +-
cr-show.c | 2 +-
crtools.c | 2 +-
eventfd.c | 2 +-
eventpoll.c | 2 +-
file-ids.c | 2 +-
files-reg.c | 2 +-
include/atomic.h | 60 --------
include/bitops.h | 118 ---------------
include/cpu.h | 2 +-
include/crtools.h | 2 +-
include/eventfd.h | 2 +-
include/eventpoll.h | 2 +-
include/file-ids.h | 2 +-
include/files-reg.h | 2 +-
include/files.h | 2 +-
include/fpu.h | 2 +-
include/image.h | 2 +-
include/inotify.h | 2 +-
include/linkage.h | 24 ----
include/lock.h | 4 +-
include/memcpy_64.h | 22 ---
include/proc_parse.h | 2 +-
include/processor-flags.h | 28 ----
include/protobuf.h | 2 +-
include/rbtree.h | 2 +-
include/restorer.h | 2 +-
include/sk-queue.h | 2 +-
include/sockets.h | 2 +-
include/syscall-types.h | 2 +-
include/syscall-x86-64.def | 76 ----------
include/types.h | 248 --------------------------------
include/unix_diag.h | 2 +-
include/util.h | 2 +-
inotify.c | 2 +-
kcmp-ids.c | 2 +-
log.c | 2 +-
mount.c | 2 +-
netfilter.c | 2 +-
parasite-syscall.c | 2 +-
pie/Makefile | 2 +-
pie/parasite-head-x86-64.S | 24 ----
pie/restorer.c | 2 +-
proc_parse.c | 2 +-
protobuf.c | 2 +-
ptrace.c | 2 +-
signalfd.c | 2 +-
sk-inet.c | 2 +-
sk-packet.c | 2 +-
sk-queue.c | 2 +-
sk-tcp.c | 2 +-
sk-unix.c | 2 +-
sysctl.c | 2 +-
tty.c | 2 +-
util-net.c | 4 +-
util.c | 2 +-
69 files changed, 659 insertions(+), 657 deletions(-)
create mode 100644 arch/x86/include/asm/atomic.h
create mode 100644 arch/x86/include/asm/bitops.h
create mode 100644 arch/x86/include/asm/linkage.h
create mode 100644 arch/x86/include/asm/memcpy_64.h
create mode 100644 arch/x86/include/asm/processor-flags.h
create mode 100644 arch/x86/include/asm/types.h
create mode 100644 arch/x86/parasite-head.S
create mode 100644 arch/x86/syscall-x86-64.def
delete mode 100644 include/atomic.h
delete mode 100644 include/bitops.h
delete mode 100644 include/linkage.h
delete mode 100644 include/memcpy_64.h
delete mode 100644 include/processor-flags.h
delete mode 100644 include/syscall-x86-64.def
delete mode 100644 include/types.h
delete mode 100644 pie/parasite-head-x86-64.S
diff --git a/Makefile b/Makefile
index 186c998..fff8738 100644
--- a/Makefile
+++ b/Makefile
@@ -41,8 +41,9 @@ ifeq ($(uname_M),x86_64)
endif
SRC_DIR ?= $(shell pwd)
+ARCH_DIR := $(SRC_DIR)/arch/$(ARCH)
-CFLAGS = -I$(SRC_DIR)/include -I$(SRC_DIR)/pie -I$(SRC_DIR)/arch/$(ARCH)/ -fno-strict-aliasing
+CFLAGS += -I$(SRC_DIR)/include -I$(SRC_DIR)/pie -I$(ARCH_DIR) -iquote $(ARCH_DIR)/include -fno-strict-aliasing
LIBS := -lrt -lpthread -lprotobuf-c
@@ -70,7 +71,7 @@ CFLAGS += $(WARNINGS) $(DEFINES)
SYSCALL-LIB = $(SRC_DIR)/arch/$(ARCH)/syscalls.o
PROTOBUF-LIB = $(SRC_DIR)/protobuf/protobuf-lib.o
-export E Q CC ECHO MAKE CFLAGS LIBS ARCH DEFINES MAKEFLAGS SRC_DIR SYSCALL-LIB SH
+export E Q CC ECHO MAKE CFLAGS LIBS ARCH DEFINES MAKEFLAGS SRC_DIR SYSCALL-LIB SH ARCH_DIR
PROGRAM := crtools
diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index c0108a1..3e8df60 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -1,4 +1,4 @@
-SYS-DEF := $(SRC_DIR)/include/syscall-x86-64.def
+SYS-DEF := $(ARCH_DIR)/syscall-x86-64.def
SYS-ASM-COMMON := syscall-common-x86-64.S
SYS-TYPES := $(SRC_DIR)/include/syscall-types.h
@@ -47,5 +47,6 @@ clean:
$(Q) $(RM) -f $(SYS-PROTO)
$(Q) $(RM) -f $(SYS-OBJ)
$(Q) $(RM) -f $(SYS-EXEC-TBL)
+ $(Q) $(RM) -f *.o *.d
.PHONY: clean x86
diff --git a/arch/x86/include/asm/atomic.h b/arch/x86/include/asm/atomic.h
new file mode 100644
index 0000000..273d595
--- /dev/null
+++ b/arch/x86/include/asm/atomic.h
@@ -0,0 +1,60 @@
+#ifndef __CR_ATOMIC_H__
+#define __CR_ATOMIC_H__
+
+#include "asm/types.h"
+
+typedef struct {
+ u32 counter;
+} atomic_t;
+
+#define atomic_set(mem, v) \
+ ({ \
+ u32 ret__ = v; \
+ asm volatile ("lock xchg %0, %1\n" \
+ : "+r" (ret__), "+m" ((mem)->counter) \
+ : \
+ : "cc", "memory"); \
+ })
+
+#define atomic_get(mem) \
+ ({ \
+ u32 ret__ = 0; \
+ asm volatile ("lock xadd %0, %1\n" \
+ : "+r" (ret__), "+m" ((mem)->counter) \
+ : \
+ : "cc", "memory"); \
+ ret__; \
+ })
+
+#define atomic_inc(mem) \
+ ({ \
+ u32 ret__ = 1; \
+ asm volatile ("lock xadd %0, %1\n" \
+ : "+r" (ret__), "+m" ((mem)->counter) \
+ : \
+ : "cc", "memory"); \
+ ret__; \
+ })
+
+#define atomic_dec(mem) \
+ ({ \
+ u32 ret__ = -1; \
+ asm volatile ("lock xadd %0, %1\n" \
+ : "+r" (ret__), "+m" ((mem)->counter) \
+ : \
+ : "cc", "memory"); \
+ ret__; \
+ })
+
+/* true if the result is 0, or false for all other cases. */
+#define atomic_dec_and_test(mem) \
+ ({ \
+ unsigned char ret__; \
+ asm volatile ("lock decl %0; sete %1\n" \
+ : "+m" ((mem)->counter), "=qm" (ret__) \
+ : \
+ : "cc", "memory"); \
+ ret__ != 0; \
+ })
+
+#endif /* __CR_ATOMIC_H__ */
diff --git a/arch/x86/include/asm/bitops.h b/arch/x86/include/asm/bitops.h
new file mode 100644
index 0000000..c65602b
--- /dev/null
+++ b/arch/x86/include/asm/bitops.h
@@ -0,0 +1,118 @@
+#ifndef __CR_BITOPS_H__
+#define __CR_BITOPS_H__
+
+#ifdef CONFIG_X86_64
+
+#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
+#define BITS_PER_LONG (8 * sizeof(long))
+#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_LONG)
+
+#define DECLARE_BITMAP(name, bits) \
+ unsigned long name[BITS_TO_LONGS(bits)]
+
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1)
+/* Technically wrong, but this avoids compilation errors on some gcc
+ versions. */
+#define BITOP_ADDR(x) "=m" (*(volatile long *) (x))
+#else
+#define BITOP_ADDR(x) "+m" (*(volatile long *) (x))
+#endif
+
+#define ADDR BITOP_ADDR(addr)
+
+static inline void set_bit(int nr, volatile unsigned long *addr)
+{
+ asm volatile("bts %1,%0" : ADDR : "Ir" (nr) : "memory");
+}
+
+static inline void change_bit(int nr, volatile unsigned long *addr)
+{
+ asm volatile("btc %1,%0" : ADDR : "Ir" (nr));
+}
+
+static inline int test_bit(int nr, volatile const unsigned long *addr)
+{
+ int oldbit;
+
+ asm volatile("bt %2,%1\n\t"
+ "sbb %0,%0"
+ : "=r" (oldbit)
+ : "m" (*(unsigned long *)addr), "Ir" (nr));
+
+ return oldbit;
+}
+
+static inline void clear_bit(int nr, volatile unsigned long *addr)
+{
+ asm volatile("btr %1,%0" : ADDR : "Ir" (nr));
+}
+
+/**
+ * __ffs - find first set bit in word
+ * @word: The word to search
+ *
+ * Undefined if no bit exists, so code should check against 0 first.
+ */
+static inline unsigned long __ffs(unsigned long word)
+{
+ asm("bsf %1,%0"
+ : "=r" (word)
+ : "rm" (word));
+ return word;
+}
+
+#define BITOP_WORD(nr) ((nr) / BITS_PER_LONG)
+
+/*
+ * Find the next set bit in a memory region.
+ */
+static inline
+unsigned long find_next_bit(const unsigned long *addr, unsigned long size,
+ unsigned long offset)
+{
+ const unsigned long *p = addr + BITOP_WORD(offset);
+ unsigned long result = offset & ~(BITS_PER_LONG-1);
+ unsigned long tmp;
+
+ if (offset >= size)
+ return size;
+ size -= result;
+ offset %= BITS_PER_LONG;
+ if (offset) {
+ tmp = *(p++);
+ tmp &= (~0UL << offset);
+ if (size < BITS_PER_LONG)
+ goto found_first;
+ if (tmp)
+ goto found_middle;
+ size -= BITS_PER_LONG;
+ result += BITS_PER_LONG;
+ }
+ while (size & ~(BITS_PER_LONG-1)) {
+ if ((tmp = *(p++)))
+ goto found_middle;
+ result += BITS_PER_LONG;
+ size -= BITS_PER_LONG;
+ }
+ if (!size)
+ return result;
+ tmp = *p;
+
+found_first:
+ tmp &= (~0UL >> (BITS_PER_LONG - size));
+ if (tmp == 0UL) /* Are any bits set? */
+ return result + size; /* Nope. */
+found_middle:
+ return result + __ffs(tmp);
+}
+
+#define for_each_bit(i, bitmask) \
+ for (i = find_next_bit(bitmask, sizeof(bitmask), 0); \
+ i < sizeof(bitmask); \
+ i = find_next_bit(bitmask, sizeof(bitmask), i + 1))
+
+#else /* CONFIG_X86_64 */
+# error x86-32 is not implemented yet
+#endif /* CONFIG_X86_64 */
+
+#endif /* __CR_BITOPS_H__ */
diff --git a/arch/x86/include/asm/linkage.h b/arch/x86/include/asm/linkage.h
new file mode 100644
index 0000000..5e0948f
--- /dev/null
+++ b/arch/x86/include/asm/linkage.h
@@ -0,0 +1,24 @@
+#ifndef __CR_LINKAGE_H__
+#define __CR_LINKAGE_H__
+
+#ifdef __ASSEMBLY__
+
+#define __ALIGN .align 4, 0x90
+#define __ALIGN_STR ".align 4, 0x90"
+
+#define GLOBAL(name) \
+ .globl name; \
+ name:
+
+#define ENTRY(name) \
+ .globl name; \
+ .type name, @function; \
+ __ALIGN; \
+ name:
+
+#define END(sym) \
+ .size sym, . - sym
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __CR_LINKAGE_H__ */
diff --git a/arch/x86/include/asm/memcpy_64.h b/arch/x86/include/asm/memcpy_64.h
new file mode 100644
index 0000000..e7012c0
--- /dev/null
+++ b/arch/x86/include/asm/memcpy_64.h
@@ -0,0 +1,22 @@
+#ifndef __CR_MEMCPY_64_H__
+#define __CR_MEMCPY_64_H__
+
+#include "compiler.h"
+#include "asm/types.h"
+
+static always_inline void *builtin_memcpy(void *to, const void *from, unsigned int n)
+{
+ int d0, d1, d2;
+ asm volatile("rep ; movsl \n"
+ "movl %4,%%ecx \n"
+ "andl $3,%%ecx \n"
+ "jz 1f \n"
+ "rep ; movsb \n"
+ "1:"
+ : "=&c" (d0), "=&D" (d1), "=&S" (d2)
+ : "0" (n / 4), "g" (n), "1" ((long)to), "2" ((long)from)
+ : "memory");
+ return to;
+}
+
+#endif /* __CR_MEMCPY_64_H__ */
diff --git a/arch/x86/include/asm/processor-flags.h b/arch/x86/include/asm/processor-flags.h
new file mode 100644
index 0000000..9f1bccd
--- /dev/null
+++ b/arch/x86/include/asm/processor-flags.h
@@ -0,0 +1,28 @@
+#ifndef __CR_PROCESSOR_FLAGS_H__
+#define __CR_PROCESSOR_FLAGS_H__
+
+/* Taken from linux kernel headers */
+
+/*
+ * EFLAGS bits
+ */
+#define X86_EFLAGS_CF 0x00000001 /* Carry Flag */
+#define X86_EFLAGS_BIT1 0x00000002 /* Bit 1 - always on */
+#define X86_EFLAGS_PF 0x00000004 /* Parity Flag */
+#define X86_EFLAGS_AF 0x00000010 /* Auxiliary carry Flag */
+#define X86_EFLAGS_ZF 0x00000040 /* Zero Flag */
+#define X86_EFLAGS_SF 0x00000080 /* Sign Flag */
+#define X86_EFLAGS_TF 0x00000100 /* Trap Flag */
+#define X86_EFLAGS_IF 0x00000200 /* Interrupt Flag */
+#define X86_EFLAGS_DF 0x00000400 /* Direction Flag */
+#define X86_EFLAGS_OF 0x00000800 /* Overflow Flag */
+#define X86_EFLAGS_IOPL 0x00003000 /* IOPL mask */
+#define X86_EFLAGS_NT 0x00004000 /* Nested Task */
+#define X86_EFLAGS_RF 0x00010000 /* Resume Flag */
+#define X86_EFLAGS_VM 0x00020000 /* Virtual Mode */
+#define X86_EFLAGS_AC 0x00040000 /* Alignment Check */
+#define X86_EFLAGS_VIF 0x00080000 /* Virtual Interrupt Flag */
+#define X86_EFLAGS_VIP 0x00100000 /* Virtual Interrupt Pending */
+#define X86_EFLAGS_ID 0x00200000 /* CPUID detection flag */
+
+#endif /* __CR_PROCESSOR_FLAGS_H__ */
diff --git a/arch/x86/include/asm/types.h b/arch/x86/include/asm/types.h
new file mode 100644
index 0000000..bf33946
--- /dev/null
+++ b/arch/x86/include/asm/types.h
@@ -0,0 +1,248 @@
+#ifndef __CR_ASM_TYPES_H__
+#define __CR_ASM_TYPES_H__
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <signal.h>
+
+#include "asm/bitops.h"
+
+/* prctl */
+#define ARCH_SET_GS 0x1001
+#define ARCH_SET_FS 0x1002
+#define ARCH_GET_FS 0x1003
+#define ARCH_GET_GS 0x1004
+
+#define FS_TLS 0
+#define GS_TLS 1
+
+/* prctl.h */
+#define PR_SET_NAME 15
+#define PR_GET_NAME 16
+
+#define PR_CAPBSET_DROP 24
+#define PR_GET_SECUREBITS 27
+#define PR_SET_SECUREBITS 28
+
+#define SECURE_NO_SETUID_FIXUP 2
+
+#define PR_SET_MM 35
+# define PR_SET_MM_START_CODE 1
+# define PR_SET_MM_END_CODE 2
+# define PR_SET_MM_START_DATA 3
+# define PR_SET_MM_END_DATA 4
+# define PR_SET_MM_START_STACK 5
+# define PR_SET_MM_START_BRK 6
+# define PR_SET_MM_BRK 7
+# define PR_SET_MM_ARG_START 8
+# define PR_SET_MM_ARG_END 9
+# define PR_SET_MM_ENV_START 10
+# define PR_SET_MM_ENV_END 11
+# define PR_SET_MM_AUXV 12
+# define PR_SET_MM_EXE_FILE 13
+
+#define PR_GET_TID_ADDRESS 40
+
+/* fcntl */
+#ifndef F_LINUX_SPECIFIC_BASE
+#define F_LINUX_SPECIFIC_BASE 1024
+#endif
+#ifndef F_SETPIPE_SZ
+# define F_SETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 7)
+#endif
+#ifndef F_GETPIPE_SZ
+# define F_GETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 8)
+#endif
+
+#ifndef F_GETOWNER_UIDS
+#define F_GETOWNER_UIDS 17
+#endif
+
+#define CLONE_CHILD_USEPID 0x02000000
+#define CLONE_VFORK 0x00004000
+
+#define SIGMAX 64
+#define SIGMAX_OLD 31
+
+#define ERESTARTSYS 512
+#define ERESTARTNOINTR 513
+#define ERESTARTNOHAND 514
+#define ERESTART_RESTARTBLOCK 516
+
+typedef uint64_t u64;
+typedef int64_t s64;
+typedef unsigned int u32;
+typedef signed int s32;
+typedef unsigned short u16;
+typedef signed short s16;
+typedef unsigned char u8;
+typedef signed char s8;
+
+#define MAJOR(dev) ((dev)>>8)
+#define MINOR(dev) ((dev) & 0xff)
+
+#define _LINUX_CAPABILITY_VERSION_3 0x20080522
+#define _LINUX_CAPABILITY_U32S_3 2
+
+#ifdef CONFIG_X86_64
+
+typedef struct {
+ unsigned long sig[1];
+} rt_sigset_t;
+
+typedef void rt_signalfn_t(int, siginfo_t *, void *);
+typedef rt_signalfn_t *rt_sighandler_t;
+
+typedef void rt_restorefn_t(void);
+typedef rt_restorefn_t *rt_sigrestore_t;
+
+typedef struct {
+ rt_sighandler_t rt_sa_handler;
+ unsigned long rt_sa_flags;
+ rt_sigrestore_t rt_sa_restorer;
+ rt_sigset_t rt_sa_mask;
+} rt_sigaction_t;
+
+#define _KNSIG 64
+# define _NSIG_BPW 64
+
+#define _KNSIG_WORDS (_KNSIG / _NSIG_BPW)
+
+typedef struct {
+ unsigned long sig[_KNSIG_WORDS];
+} k_rtsigset_t;
+
+static inline void ksigfillset(k_rtsigset_t *set)
+{
+ int i;
+ for (i = 0; i < _KNSIG_WORDS; i++)
+ set->sig[i] = (unsigned long)-1;
+}
+
+typedef struct {
+ unsigned int entry_number;
+ unsigned int base_addr;
+ unsigned int limit;
+ unsigned int seg_32bit:1;
+ unsigned int contents:2;
+ unsigned int read_exec_only:1;
+ unsigned int limit_in_pages:1;
+ unsigned int seg_not_present:1;
+ unsigned int useable:1;
+ unsigned int lm:1;
+} user_desc_t;
+
+typedef struct {
+ unsigned long r15;
+ unsigned long r14;
+ unsigned long r13;
+ unsigned long r12;
+ unsigned long bp;
+ unsigned long bx;
+ unsigned long r11;
+ unsigned long r10;
+ unsigned long r9;
+ unsigned long r8;
+ unsigned long ax;
+ unsigned long cx;
+ unsigned long dx;
+ unsigned long si;
+ unsigned long di;
+ unsigned long orig_ax;
+ unsigned long ip;
+ unsigned long cs;
+ unsigned long flags;
+ unsigned long sp;
+ unsigned long ss;
+ unsigned long fs_base;
+ unsigned long gs_base;
+ unsigned long ds;
+ unsigned long es;
+ unsigned long fs;
+ unsigned long gs;
+} user_regs_struct_t;
+
+typedef struct {
+ unsigned short cwd;
+ unsigned short swd;
+ unsigned short twd; /* Note this is not the same as
+ the 32bit/x87/FSAVE twd */
+ unsigned short fop;
+ u64 rip;
+ u64 rdp;
+ u32 mxcsr;
+ u32 mxcsr_mask;
+ u32 st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */
+ u32 xmm_space[64]; /* 16*16 bytes for each XMM-reg = 256 bytes */
+ u32 padding[24];
+} user_fpregs_struct_t;
+
+#else /* CONFIG_X86_64 */
+# error x86-32 bit mode not yet implemented
+#endif /* CONFIG_X86_64 */
+
+#define ASSIGN_TYPED(a, b) do { a = (typeof(a))b; } while (0)
+#define ASSIGN_MEMBER(a,b,m) do { ASSIGN_TYPED((a)->m, (b)->m); } while (0)
+
+#ifndef PAGE_SIZE
+# define PAGE_SIZE 4096
+#endif
+
+#ifndef PAGE_MASK
+# define PAGE_MASK (~(PAGE_SIZE - 1))
+#endif
+
+/* For sys_kcmp */
+enum kcmp_type {
+ KCMP_FILE,
+ KCMP_VM,
+ KCMP_FILES,
+ KCMP_FS,
+ KCMP_SIGHAND,
+ KCMP_IO,
+ KCMP_SYSVSEM,
+
+ KCMP_TYPES,
+};
+
+/* For UNIX sockets data */
+#ifndef SCM_MAX_FD
+# define SCM_MAX_FD 253
+#endif
+
+#include <fcntl.h>
+
+#ifndef F_SETOWN_EX
+#define F_SETOWN_EX 15
+#define F_GETOWN_EX 16
+
+struct f_owner_ex {
+ int type;
+ pid_t pid;
+};
+#endif
+
+/* File handle */
+typedef struct {
+ u32 bytes;
+ u32 type;
+ u64 __handle[16];
+} fh_t;
+
+#ifndef MAP_HUGETLB
+# define MAP_HUGETLB 0x40000
+#endif
+
+#ifndef MADV_HUGEPAGE
+# define MADV_HUGEPAGE 14
+#endif
+
+#ifndef MADV_NOHUGEPAGE
+# define MADV_NOHUGEPAGE 15
+#endif
+
+#ifndef MADV_DONTDUMP
+# define MADV_DONTDUMP 16
+#endif
+
+#endif /* __CR_ASM_TYPES_H__ */
diff --git a/arch/x86/parasite-head.S b/arch/x86/parasite-head.S
new file mode 100644
index 0000000..289672c
--- /dev/null
+++ b/arch/x86/parasite-head.S
@@ -0,0 +1,24 @@
+#include "asm/linkage.h"
+#include "parasite.h"
+
+ .section .head.text, "ax"
+ENTRY(__export_parasite_head_start)
+ leaq __export_parasite_stack(%rip), %rsp
+ subq $16, %rsp
+ andq $~15, %rsp
+ pushq $0
+ movq %rsp, %rbp
+ movl __export_parasite_cmd(%rip), %edi
+ leaq __export_parasite_args(%rip), %rsi
+ call parasite_service
+ int $0x03
+ .align 8
+__export_parasite_cmd:
+ .long 0
+__export_parasite_args:
+ .long 0
+ .space PARASITE_ARG_SIZE,0
+ .space PARASITE_STACK_SIZE,0
+__export_parasite_stack:
+ .long 0
+END(__export_parasite_head_start)
diff --git a/arch/x86/syscall-common-x86-64.S b/arch/x86/syscall-common-x86-64.S
index 84bcd8b..a549207 100644
--- a/arch/x86/syscall-common-x86-64.S
+++ b/arch/x86/syscall-common-x86-64.S
@@ -1,4 +1,4 @@
-#include "linkage.h"
+#include "asm/linkage.h"
#define SYSCALL(name, opcode) \
ENTRY(name); \
diff --git a/arch/x86/syscall-x86-64.def b/arch/x86/syscall-x86-64.def
new file mode 100644
index 0000000..7121e60
--- /dev/null
+++ b/arch/x86/syscall-x86-64.def
@@ -0,0 +1,76 @@
+#
+# System calls table, please make sure the table consist only the syscalls
+# really used somewhere in project.
+#
+# The template is (name and srguments are optinal if you need only __NR_x
+# defined, but no realy entry point in syscalls lib).
+#
+# name code name arguments
+# -----------------------------------------------------------------------
+#
+__NR_read 0 sys_read (int fd, void *buf, unsigned long count)
+__NR_write 1 sys_write (int fd, const void *buf, unsigned long count)
+__NR_open 2 sys_open (const char *filename, unsigned long flags, unsigned long mode)
+__NR_close 3 sys_close (int fd)
+__NR_lseek 8 sys_lseek (int fd, unsigned long offset, unsigned long origin)
+__NR_mmap 9 sys_mmap (void *addr, unsigned long len, unsigned long prot, unsigned long flags, unsigned long fd, unsigned long offset)
+__NR_mprotect 10 sys_mprotect (const void *addr, unsigned long len, unsigned long prot)
+__NR_munmap 11 sys_munmap (void *addr, unsigned long len)
+__NR_brk 12 sys_brk (void *addr)
+__NR_rt_sigaction 13 sys_sigaction (int signum, const rt_sigaction_t *act, rt_sigaction_t *oldact, size_t sigsetsize)
+__NR_rt_sigprocmask 14 sys_sigprocmask (int how, k_rtsigset_t *set, k_rtsigset_t *old, size_t sigsetsize)
+__NR_rt_sigreturn 15 sys_rt_sigreturn (void)
+__NR_ioctl 16 sys_ioctl (unsigned int fd, unsigned int cmd, unsigned long arg)
+__NR_mremap 25 sys_mremap (unsigned long addr, unsigned long old_len, unsigned long new_len, unsigned long flags, unsigned long new_addr)
+__NR_mincore 27 sys_mincore (void *addr, unsigned long size, unsigned char *vec)
+__NR_madvise 28 sys_madvise (unsigned long start, size_t len, int behavior)
+__NR_shmat 30 sys_shmat (int shmid, void *shmaddr, int shmflag)
+__NR_pause 34 sys_pause (void)
+__NR_nanosleep 35 sys_nanosleep (struct timespec *req, struct timespec *rem)
+__NR_getitimer 36 sys_getitimer (int which, const struct itimerval *val)
+__NR_setitimer 38 sys_setitimer (int which, const struct itimerval *val, struct itimerval *old)
+__NR_getpid 39 sys_getpid (void)
+__NR_socket 41 sys_socket (int domain, int type, int protocol)
+__NR_connect 42 sys_connect (int sockfd, struct sockaddr *addr, int addrlen)
+__NR_sendmsg 46 sys_sendmsg (int sockfd, const struct msghdr *msg, int flags)
+__NR_recvmsg 47 sys_recvmsg (int sockfd, struct msghdr *msg, int flags)
+__NR_bind 49 sys_bind (int sockfd, const struct sockaddr *addr, int addrlen)
+__NR_setsockopt 54 sys_setsockopt (int sockfd, int level, int optname, const void *optval, socklen_t optlen)
+__NR_getsockopt 55 sys_getsockopt (int sockfd, int level, int optname, const void *optval, socklen_t *optlen)
+__NR_clone 56 sys_clone (unsigned long flags, void *child_stack, void *parent_tid, void *child_tid)
+__NR_exit 60 sys_exit (unsigned long error_code)
+__NR_wait4 61 sys_waitpid (int pid, int *status, int options, struct rusage *ru)
+__NR_kill 62 sys_kill (long pid, int sig)
+__NR_fcntl 72 sys_fcntl (int fd, int type, long arg)
+__NR_flock 73 sys_flock (int fd, unsigned long cmd)
+__NR_mkdir 83 sys_mkdir (const char *name, int mode)
+__NR_rmdir 84 sys_rmdir (const char *name)
+__NR_unlink 87 sys_unlink (char *pathname)
+__NR_readlink 89 sys_readlink (const char *path, char *buf, int bufsize)
+__NR_getgroups 115 sys_getgroups (int gsize, unsigned int *groups)
+__NR_setresuid 117 sys_setresuid (int uid, int euid, int suid)
+__NR_setresgid 119 sys_setresgid (int gid, int egid, int sgid)
+__NR_getpgid 121 sys_getpgid (void)
+__NR_setfsuid 122 sys_setfsuid (int fsuid)
+__NR_setfsgid 123 sys_setfsgid (int fsgid)
+__NR_getsid 124 sys_getsid (void)
+__NR_capset 126 sys_capset (struct cap_header *h, struct cap_data *d)
+__NR_personality 135 sys_personality (unsigned int personality)
+__NR_setpriority 141 sys_setpriority (int which, int who, int nice)
+__NR_sched_setscheduler 144 sys_sched_setscheduler (int pid, int policy, struct sched_param *p)
+__NR_prctl 157 sys_prctl (int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5)
+__NR_arch_prctl 158 sys_arch_prctl (int option, unsigned long addr)
+__NR_mount 165 sys_mount (char *dev_nmae, char *dir_name, char *type, unsigned long flags, void *data)
+__NR_umount2 166 sys_umount2 (char *name, int flags)
+__NR_gettid 186 sys_gettid (void)
+__NR_futex 202 sys_futex (u32 *uaddr, int op, u32 val, struct timespec *utime, u32 *uaddr2, u32 val3)
+__NR_set_thread_area 205 sys_set_thread_area (user_desc_t *info)
+__NR_get_thread_area 211 sys_get_thread_area (user_desc_t *info)
+__NR_set_tid_address 218 sys_set_tid_address (int *tid_addr)
+__NR_restart_syscall 219 sys_restart_syscall (void)
+__NR_exit_group 231 sys_exit_group (int error_code)
+__NR_set_robust_list 273 sys_set_robust_list (struct robust_list_head *head, size_t len)
+__NR_get_robust_list 274 sys_get_robust_list (int pid, struct robust_list_head **head_ptr, size_t *len_ptr)
+__NR_open_by_handle_at 304 sys_open_by_handle_at (int mountdirfd, struct file_handle *handle, int flags)
+__NR_setns 308 sys_setns (int fd, int nstype)
+__NR_kcmp 312 sys_kcmp (pid_t pid1, pid_t pid2, int type, unsigned long idx1, unsigned long idx2)
diff --git a/cpu.c b/cpu.c
index a29fe86..983ca50 100644
--- a/cpu.c
+++ b/cpu.c
@@ -7,10 +7,10 @@
#include <sys/types.h>
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "log.h"
#include "util.h"
-#include "bitops.h"
+#include "asm/bitops.h"
#include "proc_parse.h"
diff --git a/cr-dump.c b/cr-dump.c
index 00af534..a6693a8 100644
--- a/cr-dump.c
+++ b/cr-dump.c
@@ -30,7 +30,7 @@
#include "protobuf/creds.pb-c.h"
#include "protobuf/core.pb-c.h"
-#include "types.h"
+#include "asm/types.h"
#include "list.h"
#include "file-ids.h"
#include "kcmp-ids.h"
diff --git a/cr-restore.c b/cr-restore.c
index 516ace6..ec5bd4c 100644
--- a/cr-restore.c
+++ b/cr-restore.c
@@ -25,7 +25,7 @@
#include <sys/sendfile.h>
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "image.h"
#include "util.h"
diff --git a/cr-show.c b/cr-show.c
index 48031f8..61373be 100644
--- a/cr-show.c
+++ b/cr-show.c
@@ -12,7 +12,7 @@
#include <sys/types.h>
#include <sys/stat.h>
-#include "types.h"
+#include "asm/types.h"
#include "list.h"
#include "namespaces.h"
#include "compiler.h"
diff --git a/crtools.c b/crtools.c
index b4f4b53..7cc7e63 100644
--- a/crtools.c
+++ b/crtools.c
@@ -12,7 +12,7 @@
#include <sys/types.h>
#include <sys/stat.h>
-#include "types.h"
+#include "asm/types.h"
#include "compiler.h"
#include "crtools.h"
diff --git a/eventfd.c b/eventfd.c
index 75c8b84..1e48af2 100644
--- a/eventfd.c
+++ b/eventfd.c
@@ -13,7 +13,7 @@
#include <sys/eventfd.h>
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "eventfd.h"
#include "proc_parse.h"
#include "crtools.h"
diff --git a/eventpoll.c b/eventpoll.c
index c67bc07..ccce771 100644
--- a/eventpoll.c
+++ b/eventpoll.c
@@ -13,7 +13,7 @@
#include <sys/epoll.h>
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "eventpoll.h"
#include "proc_parse.h"
#include "crtools.h"
diff --git a/file-ids.c b/file-ids.c
index 690713e..22b3ac5 100644
--- a/file-ids.c
+++ b/file-ids.c
@@ -9,7 +9,7 @@
#include <sys/types.h>
-#include "types.h"
+#include "asm/types.h"
#include "file-ids.h"
#include "rbtree.h"
#include "kcmp-ids.h"
diff --git a/files-reg.c b/files-reg.c
index c99c349..cf4fd71 100644
--- a/files-reg.c
+++ b/files-reg.c
@@ -12,7 +12,7 @@
#include "image.h"
#include "list.h"
#include "util.h"
-#include "atomic.h"
+#include "asm/atomic.h"
#include "protobuf.h"
#include "protobuf/regfile.pb-c.h"
diff --git a/include/atomic.h b/include/atomic.h
deleted file mode 100644
index 8408386..0000000
--- a/include/atomic.h
+++ /dev/null
@@ -1,60 +0,0 @@
-#ifndef __CR_ATOMIC_H__
-#define __CR_ATOMIC_H__
-
-#include "types.h"
-
-typedef struct {
- u32 counter;
-} atomic_t;
-
-#define atomic_set(mem, v) \
- ({ \
- u32 ret__ = v; \
- asm volatile ("lock xchg %0, %1\n" \
- : "+r" (ret__), "+m" ((mem)->counter) \
- : \
- : "cc", "memory"); \
- })
-
-#define atomic_get(mem) \
- ({ \
- u32 ret__ = 0; \
- asm volatile ("lock xadd %0, %1\n" \
- : "+r" (ret__), "+m" ((mem)->counter) \
- : \
- : "cc", "memory"); \
- ret__; \
- })
-
-#define atomic_inc(mem) \
- ({ \
- u32 ret__ = 1; \
- asm volatile ("lock xadd %0, %1\n" \
- : "+r" (ret__), "+m" ((mem)->counter) \
- : \
- : "cc", "memory"); \
- ret__; \
- })
-
-#define atomic_dec(mem) \
- ({ \
- u32 ret__ = -1; \
- asm volatile ("lock xadd %0, %1\n" \
- : "+r" (ret__), "+m" ((mem)->counter) \
- : \
- : "cc", "memory"); \
- ret__; \
- })
-
-/* true if the result is 0, or false for all other cases. */
-#define atomic_dec_and_test(mem) \
- ({ \
- unsigned char ret__; \
- asm volatile ("lock decl %0; sete %1\n" \
- : "+m" ((mem)->counter), "=qm" (ret__) \
- : \
- : "cc", "memory"); \
- ret__ != 0; \
- })
-
-#endif /* __CR_ATOMIC_H__ */
diff --git a/include/bitops.h b/include/bitops.h
deleted file mode 100644
index c65602b..0000000
--- a/include/bitops.h
+++ /dev/null
@@ -1,118 +0,0 @@
-#ifndef __CR_BITOPS_H__
-#define __CR_BITOPS_H__
-
-#ifdef CONFIG_X86_64
-
-#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
-#define BITS_PER_LONG (8 * sizeof(long))
-#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_LONG)
-
-#define DECLARE_BITMAP(name, bits) \
- unsigned long name[BITS_TO_LONGS(bits)]
-
-#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 1)
-/* Technically wrong, but this avoids compilation errors on some gcc
- versions. */
-#define BITOP_ADDR(x) "=m" (*(volatile long *) (x))
-#else
-#define BITOP_ADDR(x) "+m" (*(volatile long *) (x))
-#endif
-
-#define ADDR BITOP_ADDR(addr)
-
-static inline void set_bit(int nr, volatile unsigned long *addr)
-{
- asm volatile("bts %1,%0" : ADDR : "Ir" (nr) : "memory");
-}
-
-static inline void change_bit(int nr, volatile unsigned long *addr)
-{
- asm volatile("btc %1,%0" : ADDR : "Ir" (nr));
-}
-
-static inline int test_bit(int nr, volatile const unsigned long *addr)
-{
- int oldbit;
-
- asm volatile("bt %2,%1\n\t"
- "sbb %0,%0"
- : "=r" (oldbit)
- : "m" (*(unsigned long *)addr), "Ir" (nr));
-
- return oldbit;
-}
-
-static inline void clear_bit(int nr, volatile unsigned long *addr)
-{
- asm volatile("btr %1,%0" : ADDR : "Ir" (nr));
-}
-
-/**
- * __ffs - find first set bit in word
- * @word: The word to search
- *
- * Undefined if no bit exists, so code should check against 0 first.
- */
-static inline unsigned long __ffs(unsigned long word)
-{
- asm("bsf %1,%0"
- : "=r" (word)
- : "rm" (word));
- return word;
-}
-
-#define BITOP_WORD(nr) ((nr) / BITS_PER_LONG)
-
-/*
- * Find the next set bit in a memory region.
- */
-static inline
-unsigned long find_next_bit(const unsigned long *addr, unsigned long size,
- unsigned long offset)
-{
- const unsigned long *p = addr + BITOP_WORD(offset);
- unsigned long result = offset & ~(BITS_PER_LONG-1);
- unsigned long tmp;
-
- if (offset >= size)
- return size;
- size -= result;
- offset %= BITS_PER_LONG;
- if (offset) {
- tmp = *(p++);
- tmp &= (~0UL << offset);
- if (size < BITS_PER_LONG)
- goto found_first;
- if (tmp)
- goto found_middle;
- size -= BITS_PER_LONG;
- result += BITS_PER_LONG;
- }
- while (size & ~(BITS_PER_LONG-1)) {
- if ((tmp = *(p++)))
- goto found_middle;
- result += BITS_PER_LONG;
- size -= BITS_PER_LONG;
- }
- if (!size)
- return result;
- tmp = *p;
-
-found_first:
- tmp &= (~0UL >> (BITS_PER_LONG - size));
- if (tmp == 0UL) /* Are any bits set? */
- return result + size; /* Nope. */
-found_middle:
- return result + __ffs(tmp);
-}
-
-#define for_each_bit(i, bitmask) \
- for (i = find_next_bit(bitmask, sizeof(bitmask), 0); \
- i < sizeof(bitmask); \
- i = find_next_bit(bitmask, sizeof(bitmask), i + 1))
-
-#else /* CONFIG_X86_64 */
-# error x86-32 is not implemented yet
-#endif /* CONFIG_X86_64 */
-
-#endif /* __CR_BITOPS_H__ */
diff --git a/include/cpu.h b/include/cpu.h
index 63ebe4a..1502285 100644
--- a/include/cpu.h
+++ b/include/cpu.h
@@ -1,7 +1,7 @@
#ifndef __CR_CPU_H__
#define __CR_CPU_H__
-#include "types.h"
+#include "asm/types.h"
/*
* Adopted from linux kernel.
diff --git a/include/crtools.h b/include/crtools.h
index 326f0df..08c9655 100644
--- a/include/crtools.h
+++ b/include/crtools.h
@@ -4,7 +4,7 @@
#include <sys/types.h>
#include "list.h"
-#include "types.h"
+#include "asm/types.h"
#include "list.h"
#include "util.h"
#include "image.h"
diff --git a/include/eventfd.h b/include/eventfd.h
index a5b4618..7515410 100644
--- a/include/eventfd.h
+++ b/include/eventfd.h
@@ -5,7 +5,7 @@
#include <unistd.h>
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "files.h"
#include "crtools.h"
diff --git a/include/eventpoll.h b/include/eventpoll.h
index 4928258..a2f5f11 100644
--- a/include/eventpoll.h
+++ b/include/eventpoll.h
@@ -5,7 +5,7 @@
#include <unistd.h>
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "files.h"
#include "crtools.h"
diff --git a/include/file-ids.h b/include/file-ids.h
index 86e16b8..9e38173 100644
--- a/include/file-ids.h
+++ b/include/file-ids.h
@@ -2,7 +2,7 @@
#define __CR_FILE_IDS_H__
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "rbtree.h"
#include "../protobuf/fdinfo.pb-c.h"
diff --git a/include/files-reg.h b/include/files-reg.h
index 17c88c9..51022e7 100644
--- a/include/files-reg.h
+++ b/include/files-reg.h
@@ -1,7 +1,7 @@
#ifndef __CR_FILES_REG_H__
#define __CR_FILES_REG_H__
-#include "types.h"
+#include "asm/types.h"
#include "files.h"
#include "image.h"
diff --git a/include/files.h b/include/files.h
index caefb34..0c727aa 100644
--- a/include/files.h
+++ b/include/files.h
@@ -2,7 +2,7 @@
#define __CR_FILES_H__
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "lock.h"
#include "list.h"
#include "image.h"
diff --git a/include/fpu.h b/include/fpu.h
index 8682663..da717cd 100644
--- a/include/fpu.h
+++ b/include/fpu.h
@@ -4,7 +4,7 @@
#include <sys/types.h>
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#define FP_MIN_ALIGN_BYTES 64
diff --git a/include/image.h b/include/image.h
index 6d6a4a6..cdf362d 100644
--- a/include/image.h
+++ b/include/image.h
@@ -1,7 +1,7 @@
#ifndef __CR_IMAGE_H__
#define __CR_IMAGE_H__
-#include "types.h"
+#include "asm/types.h"
#include "compiler.h"
/*
diff --git a/include/inotify.h b/include/inotify.h
index 417f2a3..d45b2bc 100644
--- a/include/inotify.h
+++ b/include/inotify.h
@@ -5,7 +5,7 @@
#include <unistd.h>
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "files.h"
#include "crtools.h"
diff --git a/include/linkage.h b/include/linkage.h
deleted file mode 100644
index 5e0948f..0000000
--- a/include/linkage.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef __CR_LINKAGE_H__
-#define __CR_LINKAGE_H__
-
-#ifdef __ASSEMBLY__
-
-#define __ALIGN .align 4, 0x90
-#define __ALIGN_STR ".align 4, 0x90"
-
-#define GLOBAL(name) \
- .globl name; \
- name:
-
-#define ENTRY(name) \
- .globl name; \
- .type name, @function; \
- __ALIGN; \
- name:
-
-#define END(sym) \
- .size sym, . - sym
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* __CR_LINKAGE_H__ */
diff --git a/include/lock.h b/include/lock.h
index 8ef4113..cf976c2 100644
--- a/include/lock.h
+++ b/include/lock.h
@@ -6,8 +6,8 @@
#include <limits.h>
#include <errno.h>
-#include "types.h"
-#include "atomic.h"
+#include "asm/types.h"
+#include "asm/atomic.h"
#include "syscall.h"
#include "util.h"
diff --git a/include/memcpy_64.h b/include/memcpy_64.h
deleted file mode 100644
index 20f11cd..0000000
--- a/include/memcpy_64.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef __CR_MEMCPY_64_H__
-#define __CR_MEMCPY_64_H__
-
-#include "compiler.h"
-#include "types.h"
-
-static always_inline void *builtin_memcpy(void *to, const void *from, unsigned int n)
-{
- int d0, d1, d2;
- asm volatile("rep ; movsl \n"
- "movl %4,%%ecx \n"
- "andl $3,%%ecx \n"
- "jz 1f \n"
- "rep ; movsb \n"
- "1:"
- : "=&c" (d0), "=&D" (d1), "=&S" (d2)
- : "0" (n / 4), "g" (n), "1" ((long)to), "2" ((long)from)
- : "memory");
- return to;
-}
-
-#endif /* __CR_MEMCPY_64_H__ */
diff --git a/include/proc_parse.h b/include/proc_parse.h
index df72ef7..896b7e2 100644
--- a/include/proc_parse.h
+++ b/include/proc_parse.h
@@ -2,7 +2,7 @@
#define __CR_PROC_PARSE_H__
#include <sys/types.h>
-#include "types.h"
+#include "asm/types.h"
#include "image.h"
#include "list.h"
diff --git a/include/processor-flags.h b/include/processor-flags.h
deleted file mode 100644
index 9f1bccd..0000000
--- a/include/processor-flags.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef __CR_PROCESSOR_FLAGS_H__
-#define __CR_PROCESSOR_FLAGS_H__
-
-/* Taken from linux kernel headers */
-
-/*
- * EFLAGS bits
- */
-#define X86_EFLAGS_CF 0x00000001 /* Carry Flag */
-#define X86_EFLAGS_BIT1 0x00000002 /* Bit 1 - always on */
-#define X86_EFLAGS_PF 0x00000004 /* Parity Flag */
-#define X86_EFLAGS_AF 0x00000010 /* Auxiliary carry Flag */
-#define X86_EFLAGS_ZF 0x00000040 /* Zero Flag */
-#define X86_EFLAGS_SF 0x00000080 /* Sign Flag */
-#define X86_EFLAGS_TF 0x00000100 /* Trap Flag */
-#define X86_EFLAGS_IF 0x00000200 /* Interrupt Flag */
-#define X86_EFLAGS_DF 0x00000400 /* Direction Flag */
-#define X86_EFLAGS_OF 0x00000800 /* Overflow Flag */
-#define X86_EFLAGS_IOPL 0x00003000 /* IOPL mask */
-#define X86_EFLAGS_NT 0x00004000 /* Nested Task */
-#define X86_EFLAGS_RF 0x00010000 /* Resume Flag */
-#define X86_EFLAGS_VM 0x00020000 /* Virtual Mode */
-#define X86_EFLAGS_AC 0x00040000 /* Alignment Check */
-#define X86_EFLAGS_VIF 0x00080000 /* Virtual Interrupt Flag */
-#define X86_EFLAGS_VIP 0x00100000 /* Virtual Interrupt Pending */
-#define X86_EFLAGS_ID 0x00200000 /* CPUID detection flag */
-
-#endif /* __CR_PROCESSOR_FLAGS_H__ */
diff --git a/include/protobuf.h b/include/protobuf.h
index 6851c22..4bed9f9 100644
--- a/include/protobuf.h
+++ b/include/protobuf.h
@@ -1,7 +1,7 @@
#ifndef __CR_PROTOBUF_H__
#define __CR_PROTOBUF_H__
-#include "types.h"
+#include "asm/types.h"
#include "compiler.h"
#include "util.h"
diff --git a/include/rbtree.h b/include/rbtree.h
index a512cf3..f608210 100644
--- a/include/rbtree.h
+++ b/include/rbtree.h
@@ -8,7 +8,7 @@
#include <stddef.h>
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#define RB_RED 0
#define RB_BLACK 1
diff --git a/include/restorer.h b/include/restorer.h
index 095f03d..97e9958 100644
--- a/include/restorer.h
+++ b/include/restorer.h
@@ -5,7 +5,7 @@
#include <limits.h>
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "image.h"
#include "lock.h"
#include "util.h"
diff --git a/include/sk-queue.h b/include/sk-queue.h
index 7d13410..6dd01c3 100644
--- a/include/sk-queue.h
+++ b/include/sk-queue.h
@@ -1,7 +1,7 @@
#ifndef __CR_SK_QUEUE_H__
#define __CR_SK_QUEUE_H__
-#include "types.h"
+#include "asm/types.h"
#include "list.h"
#include "crtools.h"
#include "image.h"
diff --git a/include/sockets.h b/include/sockets.h
index 0deadb6..ed3ac09 100644
--- a/include/sockets.h
+++ b/include/sockets.h
@@ -6,7 +6,7 @@
#include <unistd.h>
#include <stdbool.h>
-#include "types.h"
+#include "asm/types.h"
#include "protobuf.h"
#include "../protobuf/sk-opts.pb-c.h"
diff --git a/include/syscall-types.h b/include/syscall-types.h
index 4285015..15713fc 100644
--- a/include/syscall-types.h
+++ b/include/syscall-types.h
@@ -12,7 +12,7 @@
#include <arpa/inet.h>
#include <sched.h>
-#include "types.h"
+#include "asm/types.h"
#ifndef CONFIG_X86_64
# error x86-32 bit mode not yet implemented
diff --git a/include/syscall-x86-64.def b/include/syscall-x86-64.def
deleted file mode 100644
index 7121e60..0000000
--- a/include/syscall-x86-64.def
+++ /dev/null
@@ -1,76 +0,0 @@
-#
-# System calls table, please make sure the table consist only the syscalls
-# really used somewhere in project.
-#
-# The template is (name and srguments are optinal if you need only __NR_x
-# defined, but no realy entry point in syscalls lib).
-#
-# name code name arguments
-# -----------------------------------------------------------------------
-#
-__NR_read 0 sys_read (int fd, void *buf, unsigned long count)
-__NR_write 1 sys_write (int fd, const void *buf, unsigned long count)
-__NR_open 2 sys_open (const char *filename, unsigned long flags, unsigned long mode)
-__NR_close 3 sys_close (int fd)
-__NR_lseek 8 sys_lseek (int fd, unsigned long offset, unsigned long origin)
-__NR_mmap 9 sys_mmap (void *addr, unsigned long len, unsigned long prot, unsigned long flags, unsigned long fd, unsigned long offset)
-__NR_mprotect 10 sys_mprotect (const void *addr, unsigned long len, unsigned long prot)
-__NR_munmap 11 sys_munmap (void *addr, unsigned long len)
-__NR_brk 12 sys_brk (void *addr)
-__NR_rt_sigaction 13 sys_sigaction (int signum, const rt_sigaction_t *act, rt_sigaction_t *oldact, size_t sigsetsize)
-__NR_rt_sigprocmask 14 sys_sigprocmask (int how, k_rtsigset_t *set, k_rtsigset_t *old, size_t sigsetsize)
-__NR_rt_sigreturn 15 sys_rt_sigreturn (void)
-__NR_ioctl 16 sys_ioctl (unsigned int fd, unsigned int cmd, unsigned long arg)
-__NR_mremap 25 sys_mremap (unsigned long addr, unsigned long old_len, unsigned long new_len, unsigned long flags, unsigned long new_addr)
-__NR_mincore 27 sys_mincore (void *addr, unsigned long size, unsigned char *vec)
-__NR_madvise 28 sys_madvise (unsigned long start, size_t len, int behavior)
-__NR_shmat 30 sys_shmat (int shmid, void *shmaddr, int shmflag)
-__NR_pause 34 sys_pause (void)
-__NR_nanosleep 35 sys_nanosleep (struct timespec *req, struct timespec *rem)
-__NR_getitimer 36 sys_getitimer (int which, const struct itimerval *val)
-__NR_setitimer 38 sys_setitimer (int which, const struct itimerval *val, struct itimerval *old)
-__NR_getpid 39 sys_getpid (void)
-__NR_socket 41 sys_socket (int domain, int type, int protocol)
-__NR_connect 42 sys_connect (int sockfd, struct sockaddr *addr, int addrlen)
-__NR_sendmsg 46 sys_sendmsg (int sockfd, const struct msghdr *msg, int flags)
-__NR_recvmsg 47 sys_recvmsg (int sockfd, struct msghdr *msg, int flags)
-__NR_bind 49 sys_bind (int sockfd, const struct sockaddr *addr, int addrlen)
-__NR_setsockopt 54 sys_setsockopt (int sockfd, int level, int optname, const void *optval, socklen_t optlen)
-__NR_getsockopt 55 sys_getsockopt (int sockfd, int level, int optname, const void *optval, socklen_t *optlen)
-__NR_clone 56 sys_clone (unsigned long flags, void *child_stack, void *parent_tid, void *child_tid)
-__NR_exit 60 sys_exit (unsigned long error_code)
-__NR_wait4 61 sys_waitpid (int pid, int *status, int options, struct rusage *ru)
-__NR_kill 62 sys_kill (long pid, int sig)
-__NR_fcntl 72 sys_fcntl (int fd, int type, long arg)
-__NR_flock 73 sys_flock (int fd, unsigned long cmd)
-__NR_mkdir 83 sys_mkdir (const char *name, int mode)
-__NR_rmdir 84 sys_rmdir (const char *name)
-__NR_unlink 87 sys_unlink (char *pathname)
-__NR_readlink 89 sys_readlink (const char *path, char *buf, int bufsize)
-__NR_getgroups 115 sys_getgroups (int gsize, unsigned int *groups)
-__NR_setresuid 117 sys_setresuid (int uid, int euid, int suid)
-__NR_setresgid 119 sys_setresgid (int gid, int egid, int sgid)
-__NR_getpgid 121 sys_getpgid (void)
-__NR_setfsuid 122 sys_setfsuid (int fsuid)
-__NR_setfsgid 123 sys_setfsgid (int fsgid)
-__NR_getsid 124 sys_getsid (void)
-__NR_capset 126 sys_capset (struct cap_header *h, struct cap_data *d)
-__NR_personality 135 sys_personality (unsigned int personality)
-__NR_setpriority 141 sys_setpriority (int which, int who, int nice)
-__NR_sched_setscheduler 144 sys_sched_setscheduler (int pid, int policy, struct sched_param *p)
-__NR_prctl 157 sys_prctl (int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5)
-__NR_arch_prctl 158 sys_arch_prctl (int option, unsigned long addr)
-__NR_mount 165 sys_mount (char *dev_nmae, char *dir_name, char *type, unsigned long flags, void *data)
-__NR_umount2 166 sys_umount2 (char *name, int flags)
-__NR_gettid 186 sys_gettid (void)
-__NR_futex 202 sys_futex (u32 *uaddr, int op, u32 val, struct timespec *utime, u32 *uaddr2, u32 val3)
-__NR_set_thread_area 205 sys_set_thread_area (user_desc_t *info)
-__NR_get_thread_area 211 sys_get_thread_area (user_desc_t *info)
-__NR_set_tid_address 218 sys_set_tid_address (int *tid_addr)
-__NR_restart_syscall 219 sys_restart_syscall (void)
-__NR_exit_group 231 sys_exit_group (int error_code)
-__NR_set_robust_list 273 sys_set_robust_list (struct robust_list_head *head, size_t len)
-__NR_get_robust_list 274 sys_get_robust_list (int pid, struct robust_list_head **head_ptr, size_t *len_ptr)
-__NR_open_by_handle_at 304 sys_open_by_handle_at (int mountdirfd, struct file_handle *handle, int flags)
-__NR_setns 308 sys_setns (int fd, int nstype)
-__NR_kcmp 312 sys_kcmp (pid_t pid1, pid_t pid2, int type, unsigned long idx1, unsigned long idx2)
diff --git a/include/types.h b/include/types.h
deleted file mode 100644
index f299752..0000000
--- a/include/types.h
+++ /dev/null
@@ -1,248 +0,0 @@
-#ifndef __CR_TYPES_H__
-#define __CR_TYPES_H__
-
-#include <stdint.h>
-#include <stdbool.h>
-#include <signal.h>
-
-#include "bitops.h"
-
-/* prctl */
-#define ARCH_SET_GS 0x1001
-#define ARCH_SET_FS 0x1002
-#define ARCH_GET_FS 0x1003
-#define ARCH_GET_GS 0x1004
-
-#define FS_TLS 0
-#define GS_TLS 1
-
-/* prctl.h */
-#define PR_SET_NAME 15
-#define PR_GET_NAME 16
-
-#define PR_CAPBSET_DROP 24
-#define PR_GET_SECUREBITS 27
-#define PR_SET_SECUREBITS 28
-
-#define SECURE_NO_SETUID_FIXUP 2
-
-#define PR_SET_MM 35
-# define PR_SET_MM_START_CODE 1
-# define PR_SET_MM_END_CODE 2
-# define PR_SET_MM_START_DATA 3
-# define PR_SET_MM_END_DATA 4
-# define PR_SET_MM_START_STACK 5
-# define PR_SET_MM_START_BRK 6
-# define PR_SET_MM_BRK 7
-# define PR_SET_MM_ARG_START 8
-# define PR_SET_MM_ARG_END 9
-# define PR_SET_MM_ENV_START 10
-# define PR_SET_MM_ENV_END 11
-# define PR_SET_MM_AUXV 12
-# define PR_SET_MM_EXE_FILE 13
-
-#define PR_GET_TID_ADDRESS 40
-
-/* fcntl */
-#ifndef F_LINUX_SPECIFIC_BASE
-#define F_LINUX_SPECIFIC_BASE 1024
-#endif
-#ifndef F_SETPIPE_SZ
-# define F_SETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 7)
-#endif
-#ifndef F_GETPIPE_SZ
-# define F_GETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 8)
-#endif
-
-#ifndef F_GETOWNER_UIDS
-#define F_GETOWNER_UIDS 17
-#endif
-
-#define CLONE_CHILD_USEPID 0x02000000
-#define CLONE_VFORK 0x00004000
-
-#define SIGMAX 64
-#define SIGMAX_OLD 31
-
-#define ERESTARTSYS 512
-#define ERESTARTNOINTR 513
-#define ERESTARTNOHAND 514
-#define ERESTART_RESTARTBLOCK 516
-
-typedef uint64_t u64;
-typedef int64_t s64;
-typedef unsigned int u32;
-typedef signed int s32;
-typedef unsigned short u16;
-typedef signed short s16;
-typedef unsigned char u8;
-typedef signed char s8;
-
-#define MAJOR(dev) ((dev)>>8)
-#define MINOR(dev) ((dev) & 0xff)
-
-#define _LINUX_CAPABILITY_VERSION_3 0x20080522
-#define _LINUX_CAPABILITY_U32S_3 2
-
-#ifdef CONFIG_X86_64
-
-typedef struct {
- unsigned long sig[1];
-} rt_sigset_t;
-
-typedef void rt_signalfn_t(int, siginfo_t *, void *);
-typedef rt_signalfn_t *rt_sighandler_t;
-
-typedef void rt_restorefn_t(void);
-typedef rt_restorefn_t *rt_sigrestore_t;
-
-typedef struct {
- rt_sighandler_t rt_sa_handler;
- unsigned long rt_sa_flags;
- rt_sigrestore_t rt_sa_restorer;
- rt_sigset_t rt_sa_mask;
-} rt_sigaction_t;
-
-#define _KNSIG 64
-# define _NSIG_BPW 64
-
-#define _KNSIG_WORDS (_KNSIG / _NSIG_BPW)
-
-typedef struct {
- unsigned long sig[_KNSIG_WORDS];
-} k_rtsigset_t;
-
-static inline void ksigfillset(k_rtsigset_t *set)
-{
- int i;
- for (i = 0; i < _KNSIG_WORDS; i++)
- set->sig[i] = (unsigned long)-1;
-}
-
-typedef struct {
- unsigned int entry_number;
- unsigned int base_addr;
- unsigned int limit;
- unsigned int seg_32bit:1;
- unsigned int contents:2;
- unsigned int read_exec_only:1;
- unsigned int limit_in_pages:1;
- unsigned int seg_not_present:1;
- unsigned int useable:1;
- unsigned int lm:1;
-} user_desc_t;
-
-typedef struct {
- unsigned long r15;
- unsigned long r14;
- unsigned long r13;
- unsigned long r12;
- unsigned long bp;
- unsigned long bx;
- unsigned long r11;
- unsigned long r10;
- unsigned long r9;
- unsigned long r8;
- unsigned long ax;
- unsigned long cx;
- unsigned long dx;
- unsigned long si;
- unsigned long di;
- unsigned long orig_ax;
- unsigned long ip;
- unsigned long cs;
- unsigned long flags;
- unsigned long sp;
- unsigned long ss;
- unsigned long fs_base;
- unsigned long gs_base;
- unsigned long ds;
- unsigned long es;
- unsigned long fs;
- unsigned long gs;
-} user_regs_struct_t;
-
-typedef struct {
- unsigned short cwd;
- unsigned short swd;
- unsigned short twd; /* Note this is not the same as
- the 32bit/x87/FSAVE twd */
- unsigned short fop;
- u64 rip;
- u64 rdp;
- u32 mxcsr;
- u32 mxcsr_mask;
- u32 st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */
- u32 xmm_space[64]; /* 16*16 bytes for each XMM-reg = 256 bytes */
- u32 padding[24];
-} user_fpregs_struct_t;
-
-#else /* CONFIG_X86_64 */
-# error x86-32 bit mode not yet implemented
-#endif /* CONFIG_X86_64 */
-
-#define ASSIGN_TYPED(a, b) do { a = (typeof(a))b; } while (0)
-#define ASSIGN_MEMBER(a,b,m) do { ASSIGN_TYPED((a)->m, (b)->m); } while (0)
-
-#ifndef PAGE_SIZE
-# define PAGE_SIZE 4096
-#endif
-
-#ifndef PAGE_MASK
-# define PAGE_MASK (~(PAGE_SIZE - 1))
-#endif
-
-/* For sys_kcmp */
-enum kcmp_type {
- KCMP_FILE,
- KCMP_VM,
- KCMP_FILES,
- KCMP_FS,
- KCMP_SIGHAND,
- KCMP_IO,
- KCMP_SYSVSEM,
-
- KCMP_TYPES,
-};
-
-/* For UNIX sockets data */
-#ifndef SCM_MAX_FD
-# define SCM_MAX_FD 253
-#endif
-
-#include <fcntl.h>
-
-#ifndef F_SETOWN_EX
-#define F_SETOWN_EX 15
-#define F_GETOWN_EX 16
-
-struct f_owner_ex {
- int type;
- pid_t pid;
-};
-#endif
-
-/* File handle */
-typedef struct {
- u32 bytes;
- u32 type;
- u64 __handle[16];
-} fh_t;
-
-#ifndef MAP_HUGETLB
-# define MAP_HUGETLB 0x40000
-#endif
-
-#ifndef MADV_HUGEPAGE
-# define MADV_HUGEPAGE 14
-#endif
-
-#ifndef MADV_NOHUGEPAGE
-# define MADV_NOHUGEPAGE 15
-#endif
-
-#ifndef MADV_DONTDUMP
-# define MADV_DONTDUMP 16
-#endif
-
-#endif /* __CR_TYPES_H__ */
diff --git a/include/unix_diag.h b/include/unix_diag.h
index 7e7dd33..3f24683 100644
--- a/include/unix_diag.h
+++ b/include/unix_diag.h
@@ -1,7 +1,7 @@
#ifndef __CR_UNIX_DIAG_H__
#define __CR_UNIX_DIAG_H__
-#include "types.h"
+#include "asm/types.h"
struct unix_diag_req {
u8 sdiag_family;
diff --git a/include/util.h b/include/util.h
index d3c85fc..0fa5003 100644
--- a/include/util.h
+++ b/include/util.h
@@ -13,7 +13,7 @@
#include <dirent.h>
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "log.h"
#include "../protobuf/vma.pb-c.h"
diff --git a/inotify.c b/inotify.c
index 1e54288..c7f7365 100644
--- a/inotify.c
+++ b/inotify.c
@@ -20,7 +20,7 @@
#include <aio.h>
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "inotify.h"
#include "proc_parse.h"
#include "syscall.h"
diff --git a/kcmp-ids.c b/kcmp-ids.c
index 6823586..3f75cff 100644
--- a/kcmp-ids.c
+++ b/kcmp-ids.c
@@ -1,6 +1,6 @@
#include <unistd.h>
#include <stdlib.h>
-#include "types.h"
+#include "asm/types.h"
#include "rbtree.h"
#include "util.h"
#include "syscall.h"
diff --git a/log.c b/log.c
index 5fa1c6b..c02dff2 100644
--- a/log.c
+++ b/log.c
@@ -13,7 +13,7 @@
#include <fcntl.h>
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "util.h"
#include "crtools.h"
diff --git a/mount.c b/mount.c
index a4c31b9..1069928 100644
--- a/mount.c
+++ b/mount.c
@@ -13,7 +13,7 @@
#include <sys/wait.h>
#include "crtools.h"
-#include "types.h"
+#include "asm/types.h"
#include "util.h"
#include "log.h"
#include "mount.h"
diff --git a/netfilter.c b/netfilter.c
index 44dc0f9..13ba3c8 100644
--- a/netfilter.c
+++ b/netfilter.c
@@ -5,7 +5,7 @@
#include <wait.h>
#include <stdlib.h>
-#include "types.h"
+#include "asm/types.h"
#include "util.h"
#include "list.h"
#include "files.h"
diff --git a/parasite-syscall.c b/parasite-syscall.c
index 5e01450..26de3ad 100644
--- a/parasite-syscall.c
+++ b/parasite-syscall.c
@@ -11,7 +11,7 @@
#include "syscall.h"
#include "ptrace.h"
-#include "processor-flags.h"
+#include "asm/processor-flags.h"
#include "parasite-syscall.h"
#include "parasite-blob.h"
#include "parasite.h"
diff --git a/pie/Makefile b/pie/Makefile
index efb7532..49c22d8 100644
--- a/pie/Makefile
+++ b/pie/Makefile
@@ -3,7 +3,7 @@ CFLAGS += -fpie -Wa,--noexecstack -fno-strict-aliasing
GEN-OFFSETS := gen-offsets.sh
-PASM-OBJS += parasite-head-x86-64.o
+PASM-OBJS += $(ARCH_DIR)/parasite-head.o
PARASITE += parasite.bin.o parasite.bin
RESTORER := restorer.bin.o restorer.bin
diff --git a/pie/parasite-head-x86-64.S b/pie/parasite-head-x86-64.S
deleted file mode 100644
index a2c12dc..0000000
--- a/pie/parasite-head-x86-64.S
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "linkage.h"
-#include "parasite.h"
-
- .section .head.text, "ax"
-ENTRY(__export_parasite_head_start)
- leaq __export_parasite_stack(%rip), %rsp
- subq $16, %rsp
- andq $~15, %rsp
- pushq $0
- movq %rsp, %rbp
- movl __export_parasite_cmd(%rip), %edi
- leaq __export_parasite_args(%rip), %rsi
- call parasite_service
- int $0x03
- .align 8
-__export_parasite_cmd:
- .long 0
-__export_parasite_args:
- .long 0
- .space PARASITE_ARG_SIZE,0
- .space PARASITE_STACK_SIZE,0
-__export_parasite_stack:
- .long 0
-END(__export_parasite_head_start)
diff --git a/pie/restorer.c b/pie/restorer.c
index 03536ae..337577a 100644
--- a/pie/restorer.c
+++ b/pie/restorer.c
@@ -14,7 +14,7 @@
#include <sys/resource.h>
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "syscall.h"
#include "log.h"
#include "util.h"
diff --git a/proc_parse.c b/proc_parse.c
index a7de1d1..81bf11c 100644
--- a/proc_parse.c
+++ b/proc_parse.c
@@ -9,7 +9,7 @@
#include <string.h>
#include <linux/fs.h>
-#include "types.h"
+#include "asm/types.h"
#include "list.h"
#include "util.h"
#include "crtools.h"
diff --git a/protobuf.c b/protobuf.c
index f5ec1ea..5213d48 100644
--- a/protobuf.c
+++ b/protobuf.c
@@ -10,7 +10,7 @@
#include "crtools.h"
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "log.h"
#include "util.h"
#include "string.h"
diff --git a/ptrace.c b/ptrace.c
index 66de9f4..0140918 100644
--- a/ptrace.c
+++ b/ptrace.c
@@ -15,7 +15,7 @@
#include "crtools.h"
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "util.h"
#include "ptrace.h"
#include "proc_parse.h"
diff --git a/signalfd.c b/signalfd.c
index 578fec0..91c14d6 100644
--- a/signalfd.c
+++ b/signalfd.c
@@ -3,7 +3,7 @@
#include <sys/signalfd.h>
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "signalfd.h"
#include "proc_parse.h"
#include "crtools.h"
diff --git a/sk-inet.c b/sk-inet.c
index 19a413b..25581ba 100644
--- a/sk-inet.c
+++ b/sk-inet.c
@@ -9,7 +9,7 @@
#include <string.h>
#include <stdlib.h>
-#include "types.h"
+#include "asm/types.h"
#include "libnetlink.h"
#include "crtools.h"
#include "inet_diag.h"
diff --git a/sk-packet.c b/sk-packet.c
index a82825a..0e85d36 100644
--- a/sk-packet.c
+++ b/sk-packet.c
@@ -5,7 +5,7 @@
#include <unistd.h>
#include <string.h>
#include "crtools.h"
-#include "types.h"
+#include "asm/types.h"
#include "files.h"
#include "sockets.h"
#include "libnetlink.h"
diff --git a/sk-queue.c b/sk-queue.c
index b96daaa..4f9a743 100644
--- a/sk-queue.c
+++ b/sk-queue.c
@@ -10,7 +10,7 @@
#include <sys/socket.h>
#include <sys/sendfile.h>
-#include "types.h"
+#include "asm/types.h"
#include "list.h"
#include "image.h"
#include "crtools.h"
diff --git a/sk-tcp.c b/sk-tcp.c
index c7c2c15..ebf9815 100644
--- a/sk-tcp.c
+++ b/sk-tcp.c
@@ -10,7 +10,7 @@
#include "util.h"
#include "list.h"
#include "log.h"
-#include "types.h"
+#include "asm/types.h"
#include "files.h"
#include "sockets.h"
#include "files.h"
diff --git a/sk-unix.c b/sk-unix.c
index b2081fb..c6ec844 100644
--- a/sk-unix.c
+++ b/sk-unix.c
@@ -8,7 +8,7 @@
#include <sys/un.h>
#include <stdlib.h>
-#include "types.h"
+#include "asm/types.h"
#include "libnetlink.h"
#include "crtools.h"
#include "unix_diag.h"
diff --git a/sysctl.c b/sysctl.c
index a7bb6e3..92fc153 100644
--- a/sysctl.c
+++ b/sysctl.c
@@ -4,7 +4,7 @@
#include <string.h>
#include <stdlib.h>
-#include "types.h"
+#include "asm/types.h"
#include "sysctl.h"
#include "util.h"
diff --git a/tty.c b/tty.c
index f5f10f9..e084059 100644
--- a/tty.c
+++ b/tty.c
@@ -13,7 +13,7 @@
#include <linux/major.h>
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "syscall.h"
#include "files.h"
diff --git a/util-net.c b/util-net.c
index 0feae03..3aace3d 100644
--- a/util-net.c
+++ b/util-net.c
@@ -4,8 +4,8 @@
#include <errno.h>
#include "compiler.h"
-#include "memcpy_64.h"
-#include "types.h"
+#include "asm/memcpy_64.h"
+#include "asm/types.h"
#include "syscall.h"
#include "util-net.h"
diff --git a/util.c b/util.c
index 59ed831..90c82f7 100644
--- a/util.c
+++ b/util.c
@@ -30,7 +30,7 @@
#include <sys/wait.h>
#include "compiler.h"
-#include "types.h"
+#include "asm/types.h"
#include "list.h"
#include "util.h"
--
1.7.10.4
More information about the CRIU
mailing list