summaryrefslogtreecommitdiff
path: root/src/arch/x86
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/x86')
-rw-r--r--src/arch/x86/boot/acpi.c2
-rw-r--r--src/arch/x86/include/arch/cpu.h5
-rw-r--r--src/arch/x86/include/arch/stages.h7
-rw-r--r--src/arch/x86/lib/cbfs_and_run.c4
4 files changed, 13 insertions, 5 deletions
diff --git a/src/arch/x86/boot/acpi.c b/src/arch/x86/boot/acpi.c
index 4d405d9fe0..fd6a1baf88 100644
--- a/src/arch/x86/boot/acpi.c
+++ b/src/arch/x86/boot/acpi.c
@@ -748,7 +748,7 @@ extern int lowmem_backup_size;
#define WAKEUP_BASE 0x600
void (*acpi_do_wakeup)(u32 vector, u32 backup_source, u32 backup_target,
- u32 backup_size) __attribute__((regparm(0))) = (void *)WAKEUP_BASE;
+ u32 backup_size) asmlinkage = (void *)WAKEUP_BASE;
extern unsigned char __wakeup, __wakeup_size;
diff --git a/src/arch/x86/include/arch/cpu.h b/src/arch/x86/include/arch/cpu.h
index abe3f7fba7..ed8148e465 100644
--- a/src/arch/x86/include/arch/cpu.h
+++ b/src/arch/x86/include/arch/cpu.h
@@ -1,6 +1,8 @@
#ifndef ARCH_CPU_H
#define ARCH_CPU_H
+#include <stdint.h>
+
/*
* EFLAGS bits
*/
@@ -205,6 +207,9 @@ static void inline get_fms(struct cpuinfo_x86 *c, uint32_t tfms)
c->x86_model += ((tfms >> 16) & 0xF) << 4;
}
+
+#define asmlinkage __attribute__((regparm(0)))
+
#endif
#endif /* ARCH_CPU_H */
diff --git a/src/arch/x86/include/arch/stages.h b/src/arch/x86/include/arch/stages.h
index 3ddba51783..0d00144cba 100644
--- a/src/arch/x86/include/arch/stages.h
+++ b/src/arch/x86/include/arch/stages.h
@@ -19,6 +19,9 @@
#ifndef __ARCH_STAGES_H
#define __ARCH_STAGES_H
-void __attribute__((regparm(0))) copy_and_run(unsigned cpu_reset);
-void __attribute__((regparm(0))) copy_and_run_ap_code_in_car(unsigned ret_addr);
+
+#include <arch/cpu.h>
+
+void asmlinkage copy_and_run(unsigned cpu_reset);
+void asmlinkage copy_and_run_ap_code_in_car(unsigned ret_addr);
#endif
diff --git a/src/arch/x86/lib/cbfs_and_run.c b/src/arch/x86/lib/cbfs_and_run.c
index 62b2789f53..1f87e7ab62 100644
--- a/src/arch/x86/lib/cbfs_and_run.c
+++ b/src/arch/x86/lib/cbfs_and_run.c
@@ -41,7 +41,7 @@ static void cbfs_and_run_core(const char *filename, unsigned ebp)
);
}
-void __attribute__((regparm(0))) copy_and_run(unsigned cpu_reset)
+void asmlinkage copy_and_run(unsigned cpu_reset)
{
// FIXME fix input parameters instead normalizing them here.
if (cpu_reset == 1) cpu_reset = -1;
@@ -51,7 +51,7 @@ void __attribute__((regparm(0))) copy_and_run(unsigned cpu_reset)
}
#if CONFIG_AP_CODE_IN_CAR
-void __attribute__((regparm(0))) copy_and_run_ap_code_in_car(unsigned ret_addr)
+void asmlinkage copy_and_run_ap_code_in_car(unsigned ret_addr)
{
cbfs_and_run_core(CONFIG_CBFS_PREFIX "/coreboot_ap", ret_addr);
}