diff options
Diffstat (limited to 'arch/um/kernel/physmem.c')
-rw-r--r-- | arch/um/kernel/physmem.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/um/kernel/physmem.c b/arch/um/kernel/physmem.c index 420e6d51fa0f..a24e3b7f4bf0 100644 --- a/arch/um/kernel/physmem.c +++ b/arch/um/kernel/physmem.c | |||
@@ -353,6 +353,8 @@ void map_memory(unsigned long virt, unsigned long phys, unsigned long len, | |||
353 | 353 | ||
354 | #define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) | 354 | #define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) |
355 | 355 | ||
356 | extern int __syscall_stub_start, __binary_start; | ||
357 | |||
356 | void setup_physmem(unsigned long start, unsigned long reserve_end, | 358 | void setup_physmem(unsigned long start, unsigned long reserve_end, |
357 | unsigned long len, unsigned long highmem) | 359 | unsigned long len, unsigned long highmem) |
358 | { | 360 | { |
@@ -371,6 +373,12 @@ void setup_physmem(unsigned long start, unsigned long reserve_end, | |||
371 | exit(1); | 373 | exit(1); |
372 | } | 374 | } |
373 | 375 | ||
376 | /* Special kludge - This page will be mapped in to userspace processes | ||
377 | * from physmem_fd, so it needs to be written out there. | ||
378 | */ | ||
379 | os_seek_file(physmem_fd, __pa(&__syscall_stub_start)); | ||
380 | os_write_file(physmem_fd, &__syscall_stub_start, PAGE_SIZE); | ||
381 | |||
374 | bootmap_size = init_bootmem(pfn, pfn + delta); | 382 | bootmap_size = init_bootmem(pfn, pfn + delta); |
375 | free_bootmem(__pa(reserve_end) + bootmap_size, | 383 | free_bootmem(__pa(reserve_end) + bootmap_size, |
376 | len - bootmap_size - reserve); | 384 | len - bootmap_size - reserve); |