summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2021-04-03 15:26:41 +1100
committerDamien Zammit <damien@zamaudio.com>2021-04-03 15:31:23 +1100
commit41fb05b4944ea35a23cadfe81fb978ae34848e04 (patch)
tree07ef3908d118848d13e2152065ff5ddb648dec74
parent9ddeb96e0bfe27bca3b7a5034141d8fd897b1e88 (diff)
libacpica: Add config for GNU
-rw-r--r--libacpica/acpi/platform/acenv.h3
-rw-r--r--libacpica/acpi/platform/acenvex.h3
-rw-r--r--libacpica/acpi/platform/acgnu.h159
-rw-r--r--libacpica/acpi/platform/acgnuex.h52
4 files changed, 217 insertions, 0 deletions
diff --git a/libacpica/acpi/platform/acenv.h b/libacpica/acpi/platform/acenv.h
index 3689c2c6..b71ecea4 100644
--- a/libacpica/acpi/platform/acenv.h
+++ b/libacpica/acpi/platform/acenv.h
@@ -161,6 +161,9 @@
#if defined(_LINUX) || defined(__linux__)
#include <acpi/platform/aclinux.h>
+#elif defined(__GNU__)
+#include <acpi/platform/acgnu.h>
+
#elif defined(_APPLE) || defined(__APPLE__)
#include "acmacosx.h"
diff --git a/libacpica/acpi/platform/acenvex.h b/libacpica/acpi/platform/acenvex.h
index 277fe2fa..ede92b70 100644
--- a/libacpica/acpi/platform/acenvex.h
+++ b/libacpica/acpi/platform/acenvex.h
@@ -22,6 +22,9 @@
#if defined(_LINUX) || defined(__linux__)
#include <acpi/platform/aclinuxex.h>
+#elif defined(__GNU__)
+#include <acpi/platform/acgnuex.h>
+
#elif defined(__DragonFly__)
#include "acdragonflyex.h"
diff --git a/libacpica/acpi/platform/acgnu.h b/libacpica/acpi/platform/acgnu.h
new file mode 100644
index 00000000..17c62124
--- /dev/null
+++ b/libacpica/acpi/platform/acgnu.h
@@ -0,0 +1,159 @@
+#ifndef __ACGNU_H_
+#define __ACGNU_H__
+
+/* Common (in-kernel/user-space) ACPICA configuration */
+
+#define ACPI_USE_SYSTEM_CLIBRARY
+#define ACPI_USE_DO_WHILE_0
+#define ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS
+#define ACPI_LIBRARY
+
+#ifdef __KERNEL__
+
+#define ACPI_USE_SYSTEM_INTTYPES
+#define ACPI_USE_GPE_POLLING
+
+/* Kernel specific ACPICA configuration */
+
+#define ACPI_REDUCED_HARDWARE 0
+
+#ifdef CONFIG_ACPI_DEBUGGER
+#define ACPI_DEBUGGER
+#endif
+
+#ifdef CONFIG_ACPI_DEBUG
+#define ACPI_MUTEX_DEBUG
+#endif
+
+#include <semaphore.h>
+#include <pthread.h>
+#include <stdint.h>
+#include <malloc.h>
+#include <string.h>
+#include <ctype.h>
+typedef uint8_t u8;
+typedef uint16_t u16;
+typedef uint32_t u32;
+typedef uint64_t u64;
+typedef int8_t s8;
+typedef int16_t s16;
+typedef int32_t s32;
+typedef int64_t s64;
+
+#define ACPI_INIT_FUNCTION
+
+#ifndef CONFIG_ACPI
+
+#undef ACPI_NO_MEM_ALLOCATIONS
+#undef ACPI_NO_ERROR_MESSAGES
+#define ACPI_DEBUG_OUTPUT
+
+#define ACPI_MEM_MAPPING struct acpi_mem_mapping
+
+#endif /* CONFIG_ACPI */
+
+/* Host-dependent types and defines for in-kernel ACPICA */
+
+#if INTPTR_MAX == 9223372036854775807L
+#define ACPI_MACHINE_WIDTH 64
+#else
+#define ACPI_MACHINE_WIDTH 32
+#endif
+
+#define ACPI_USE_NATIVE_DIVIDE
+#define ACPI_USE_NATIVE_MATH64
+#define ACPI_EXPORT_SYMBOL(symbol)
+
+#define acpi_semaphore sem_t*
+#define acpi_spinlock sem_t*
+#define acpi_cpu_flags unsigned long
+#define acpi_cache_t struct acpi_memory_list
+
+/* Use native version of acpi_os_allocate_zeroed */
+
+#define USE_NATIVE_ALLOCATE_ZEROED
+
+/*
+ * Overrides for in-kernel ACPICA
+ */
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_initialize
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_terminate
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_allocate_zeroed
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_free
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_thread_id
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_create_lock
+
+/*
+ * OSL interfaces used by debugger/disassembler
+ */
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_readable
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_writable
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_initialize_debugger
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_terminate_debugger
+
+/*
+ * OSL interfaces used by utilities
+ */
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_redirect_output
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_name
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_index
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_table_by_address
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_open_directory
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_get_next_filename
+#define ACPI_USE_ALTERNATE_PROTOTYPE_acpi_os_close_directory
+
+#define ACPI_MSG_ERROR "ACPI Error: "
+#define ACPI_MSG_EXCEPTION "ACPI Exception: "
+#define ACPI_MSG_WARNING "ACPI Warning: "
+#define ACPI_MSG_INFO "ACPI: "
+
+#define ACPI_MSG_BIOS_ERROR "ACPI BIOS Error (bug): "
+#define ACPI_MSG_BIOS_WARNING "ACPI BIOS Warning (bug): "
+
+/*
+ * Use designated initializers for function pointer structs.
+ */
+#define ACPI_STRUCT_INIT(field, value) .field = value
+
+#else /* !__KERNEL__ */
+
+#define ACPI_USE_STANDARD_HEADERS
+
+#ifdef ACPI_USE_STANDARD_HEADERS
+#include <unistd.h>
+#endif
+
+/* Define/disable kernel-specific declarators */
+
+#ifndef __init
+#define __init
+#endif
+#ifndef __iomem
+#define __iomem
+#endif
+
+/* Host-dependent types and defines for user-space ACPICA */
+
+#define ACPI_FLUSH_CPU_CACHE()
+#define ACPI_CAST_PTHREAD_T(pthread) ((acpi_thread_id) (pthread))
+
+#if INTPTR_MAX == 9223372036854775807L
+#define ACPI_MACHINE_WIDTH 64
+#define COMPILER_DEPENDENT_INT64 long
+#define COMPILER_DEPENDENT_UINT64 unsigned long
+#else
+#define ACPI_MACHINE_WIDTH 32
+#define COMPILER_DEPENDENT_INT64 long long
+#define COMPILER_DEPENDENT_UINT64 unsigned long long
+#define ACPI_USE_NATIVE_DIVIDE
+#define ACPI_USE_NATIVE_MATH64
+#endif
+
+#ifndef __cdecl
+#define __cdecl
+#endif
+
+#endif /* __KERNEL__ */
+
+#endif /* __ACGNU_H__ */
diff --git a/libacpica/acpi/platform/acgnuex.h b/libacpica/acpi/platform/acgnuex.h
new file mode 100644
index 00000000..f1e727d0
--- /dev/null
+++ b/libacpica/acpi/platform/acgnuex.h
@@ -0,0 +1,52 @@
+#ifndef __ACGNUEX_H__
+#define __ACGNUEX_H__
+
+#ifdef __KERNEL__
+
+#define ACPI_USE_LOCAL_CACHE
+
+/*
+ * Overrides for in-kernel ACPICA
+ */
+acpi_status ACPI_INIT_FUNCTION acpi_os_initialize(void);
+
+acpi_status acpi_os_terminate(void);
+
+static inline void *acpi_os_allocate(acpi_size size)
+{
+ return (void *)malloc (size);
+}
+
+static inline void *acpi_os_allocate_zeroed(acpi_size size)
+{
+ return (void *)calloc (1, size);
+}
+
+static inline void acpi_os_free(void *memory)
+{
+ free (memory);
+}
+
+static inline acpi_thread_id acpi_os_get_thread_id(void)
+{
+ return pthread_self();
+}
+
+static inline u8 acpi_os_readable(void *pointer, acpi_size length)
+{
+ return TRUE;
+}
+
+static inline acpi_status acpi_os_initialize_debugger(void)
+{
+ return 0;
+}
+
+static inline void acpi_os_terminate_debugger(void)
+{
+ return;
+}
+
+#endif /* __KERNEL__ */
+
+#endif /* __ACGNUEX_H__ */