summaryrefslogtreecommitdiff
path: root/purgatory
diff options
context:
space:
mode:
Diffstat (limited to 'purgatory')
-rw-r--r--purgatory/arch/i386/crashdump_backup.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/purgatory/arch/i386/crashdump_backup.c b/purgatory/arch/i386/crashdump_backup.c
index c619446..365eb5d 100644
--- a/purgatory/arch/i386/crashdump_backup.c
+++ b/purgatory/arch/i386/crashdump_backup.c
@@ -20,13 +20,15 @@
#include <stdint.h>
#include <string.h>
-#include "../../../kexec/arch/i386/crashdump-x86.h"
/* Backup region start gets set after /proc/iomem has been parsed. */
/* We reuse the same code for x86_64 also so changing backup_start to
unsigned long */
unsigned long backup_start = 0;
+unsigned long backup_src_start = 0;
+unsigned long backup_src_size = 0;
+
/* Backup first 640K of memory to backup region as reserved by kexec.
* Assuming first 640K has to be present on i386 machines and no address
* validity checks have to be performed. */
@@ -34,11 +36,16 @@ unsigned long backup_start = 0;
void crashdump_backup_memory(void)
{
void *dest, *src;
+ size_t size;
+
+ src = (void *) backup_src_start;
+ size = (size_t) backup_src_size;
- src = (void *) BACKUP_SRC_START;
+ if (!size)
+ return;
if (backup_start) {
dest = (void *)(backup_start);
- memcpy(dest, src, BACKUP_SRC_SIZE);
+ memcpy(dest, src, size);
}
}