# UAPI Header export list
include include/uapi/asm-generic/Kbuild.asm

header-y += byteorder.h
header-y += kvm_para.h
header-y += ptrace.h
header-y += sigcontext.h
header-y += unistd.h

generic-y += kvm_para.h
