@@ -60,3 +60,18 @@ bool_t __init acpi_psci_hvc_present(void)
{
return acpi_gbl_FADT.arm_boot_flags & ACPI_FADT_PSCI_USE_HVC;
}
+
+paddr_t __init acpi_get_table_offset(struct membank tbl_add[],
+ EFI_MEM_RES index)
+{
+ int i;
+ paddr_t offset = 0;
+
+ for ( i = 0; i < index; i++ )
+ {
+ /* Aligned with 64bit (8 bytes) */
+ offset += ROUNDUP(tbl_add[i].size, 8);
+ }
+
+ return offset;
+}
@@ -25,6 +25,7 @@
#include <xen/init.h>
#include <asm/page.h>
+#include <asm/setup.h>
#define COMPILER_DEPENDENT_INT64 long long
#define COMPILER_DEPENDENT_UINT64 unsigned long long
@@ -46,6 +47,15 @@ bool_t __init acpi_psci_present(void);
bool_t __init acpi_psci_hvc_present(void);
void __init acpi_smp_init_cpus(void);
+/*
+ * This function returns the offset of a given ACPI/EFI table in the allocated
+ * memory region. Currently, the tables should be created in the same order as
+ * their associated 'index' in the enum EFI_MEM_RES. This means the function
+ * won't return the correct offset until all the tables before a given 'index'
+ * are created.
+ */
+paddr_t acpi_get_table_offset(struct membank tbl_add[], EFI_MEM_RES index);
+
#ifdef CONFIG_ACPI
extern bool_t acpi_disabled;
/* Basic configuration for ACPI */