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); |
