2019-08-25 09:49:19 +00:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0 */
|
2007-05-06 21:51:08 +00:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __START_H__
|
|
|
|
#define __START_H__
|
|
|
|
|
2011-08-18 19:01:49 +00:00
|
|
|
#include <generated/asm-offsets.h>
|
uml: fix stub address calculations
The calculation of CONFIG_STUB_CODE and CONFIG_STUB_DATA didn't take into
account anything but 3G/1G and 2G/2G, leaving the other vmsplits out in the
cold.
I'd rather not duplicate the four known host vmsplit cases for each of these
symbols. I'd also like to calculate them based on the highest userspace
address.
The Kconfig language seems not to allow calculation of hex constants, so I
moved this to as-layout.h. CONFIG_STUB_CODE, CONFIG_STUB_DATA, and
CONFIG_STUB_START are now gone. In their place are STUB_CODE, STUB_DATA, and
STUB_START in as-layout.h.
i386 and x86_64 seem to differ as to whether an unadorned constant is an int
or a long, so I cast them to unsigned long so they can be printed
consistently. However, they are also used in stub.S, where C types don't work
so well. So, there are ASM_ versions of these constants for use in stub.S. I
also ifdef-ed the non-asm-friendly portion of as-layout.h.
With this in place, most of the rest of this patch is changing CONFIG_STUB_*
to STUB_*, except in stub.S, where they are changed to ASM_STUB_*.
defconfig has the old symbols deleted.
I also print these addresses out in case there is any problem mapping them on
the host.
The two stub.S files had some trailing whitespace, so that is cleaned up here.
[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-10-16 08:27:33 +00:00
|
|
|
|
|
|
|
/*
|
2008-02-05 06:30:44 +00:00
|
|
|
* Stolen from linux/const.h, which can't be directly included since
|
|
|
|
* this is used in userspace code, which has no access to the kernel
|
|
|
|
* headers. Changed to be suitable for adding casts to the start,
|
|
|
|
* rather than "UL" to the end.
|
uml: fix stub address calculations
The calculation of CONFIG_STUB_CODE and CONFIG_STUB_DATA didn't take into
account anything but 3G/1G and 2G/2G, leaving the other vmsplits out in the
cold.
I'd rather not duplicate the four known host vmsplit cases for each of these
symbols. I'd also like to calculate them based on the highest userspace
address.
The Kconfig language seems not to allow calculation of hex constants, so I
moved this to as-layout.h. CONFIG_STUB_CODE, CONFIG_STUB_DATA, and
CONFIG_STUB_START are now gone. In their place are STUB_CODE, STUB_DATA, and
STUB_START in as-layout.h.
i386 and x86_64 seem to differ as to whether an unadorned constant is an int
or a long, so I cast them to unsigned long so they can be printed
consistently. However, they are also used in stub.S, where C types don't work
so well. So, there are ASM_ versions of these constants for use in stub.S. I
also ifdef-ed the non-asm-friendly portion of as-layout.h.
With this in place, most of the rest of this patch is changing CONFIG_STUB_*
to STUB_*, except in stub.S, where they are changed to ASM_STUB_*.
defconfig has the old symbols deleted.
I also print these addresses out in case there is any problem mapping them on
the host.
The two stub.S files had some trailing whitespace, so that is cleaned up here.
[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-10-16 08:27:33 +00:00
|
|
|
*/
|
|
|
|
|
2008-02-05 06:30:44 +00:00
|
|
|
/* Some constant macros are used in both assembler and
|
|
|
|
* C code. Therefore we cannot annotate them always with
|
|
|
|
* 'UL' and other type specifiers unilaterally. We
|
|
|
|
* use the following macros to deal with this.
|
uml: fix stub address calculations
The calculation of CONFIG_STUB_CODE and CONFIG_STUB_DATA didn't take into
account anything but 3G/1G and 2G/2G, leaving the other vmsplits out in the
cold.
I'd rather not duplicate the four known host vmsplit cases for each of these
symbols. I'd also like to calculate them based on the highest userspace
address.
The Kconfig language seems not to allow calculation of hex constants, so I
moved this to as-layout.h. CONFIG_STUB_CODE, CONFIG_STUB_DATA, and
CONFIG_STUB_START are now gone. In their place are STUB_CODE, STUB_DATA, and
STUB_START in as-layout.h.
i386 and x86_64 seem to differ as to whether an unadorned constant is an int
or a long, so I cast them to unsigned long so they can be printed
consistently. However, they are also used in stub.S, where C types don't work
so well. So, there are ASM_ versions of these constants for use in stub.S. I
also ifdef-ed the non-asm-friendly portion of as-layout.h.
With this in place, most of the rest of this patch is changing CONFIG_STUB_*
to STUB_*, except in stub.S, where they are changed to ASM_STUB_*.
defconfig has the old symbols deleted.
I also print these addresses out in case there is any problem mapping them on
the host.
The two stub.S files had some trailing whitespace, so that is cleaned up here.
[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-10-16 08:27:33 +00:00
|
|
|
*/
|
2021-01-13 21:09:44 +00:00
|
|
|
#define STUB_START stub_start
|
2021-01-13 21:09:43 +00:00
|
|
|
#define STUB_CODE STUB_START
|
|
|
|
#define STUB_DATA (STUB_CODE + UM_KERN_PAGE_SIZE)
|
|
|
|
#define STUB_END (STUB_DATA + UM_KERN_PAGE_SIZE)
|
2008-02-05 06:30:44 +00:00
|
|
|
|
|
|
|
#ifndef __ASSEMBLY__
|
uml: fix stub address calculations
The calculation of CONFIG_STUB_CODE and CONFIG_STUB_DATA didn't take into
account anything but 3G/1G and 2G/2G, leaving the other vmsplits out in the
cold.
I'd rather not duplicate the four known host vmsplit cases for each of these
symbols. I'd also like to calculate them based on the highest userspace
address.
The Kconfig language seems not to allow calculation of hex constants, so I
moved this to as-layout.h. CONFIG_STUB_CODE, CONFIG_STUB_DATA, and
CONFIG_STUB_START are now gone. In their place are STUB_CODE, STUB_DATA, and
STUB_START in as-layout.h.
i386 and x86_64 seem to differ as to whether an unadorned constant is an int
or a long, so I cast them to unsigned long so they can be printed
consistently. However, they are also used in stub.S, where C types don't work
so well. So, there are ASM_ versions of these constants for use in stub.S. I
also ifdef-ed the non-asm-friendly portion of as-layout.h.
With this in place, most of the rest of this patch is changing CONFIG_STUB_*
to STUB_*, except in stub.S, where they are changed to ASM_STUB_*.
defconfig has the old symbols deleted.
I also print these addresses out in case there is any problem mapping them on
the host.
The two stub.S files had some trailing whitespace, so that is cleaned up here.
[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-10-16 08:27:33 +00:00
|
|
|
|
2012-10-08 02:27:32 +00:00
|
|
|
#include <sysdep/ptrace.h>
|
2007-05-06 21:51:08 +00:00
|
|
|
|
|
|
|
struct cpu_task {
|
|
|
|
int pid;
|
|
|
|
void *task;
|
|
|
|
};
|
|
|
|
|
|
|
|
extern struct cpu_task cpu_tasks[];
|
|
|
|
|
|
|
|
extern unsigned long high_physmem;
|
|
|
|
extern unsigned long uml_physmem;
|
|
|
|
extern unsigned long uml_reserved;
|
|
|
|
extern unsigned long end_vm;
|
|
|
|
extern unsigned long start_vm;
|
|
|
|
extern unsigned long long highmem;
|
|
|
|
|
|
|
|
extern unsigned long brk_start;
|
|
|
|
|
2008-02-08 12:22:07 +00:00
|
|
|
extern unsigned long host_task_size;
|
2021-01-13 21:09:44 +00:00
|
|
|
extern unsigned long stub_start;
|
2008-02-08 12:22:07 +00:00
|
|
|
|
2007-05-06 21:51:08 +00:00
|
|
|
extern int linux_main(int argc, char **argv);
|
2015-03-28 08:59:46 +00:00
|
|
|
extern void uml_finishsetup(void);
|
2007-05-06 21:51:08 +00:00
|
|
|
|
2012-08-01 22:49:17 +00:00
|
|
|
struct siginfo;
|
|
|
|
extern void (*sig_info[])(int, struct siginfo *si, struct uml_pt_regs *);
|
2007-05-06 21:51:08 +00:00
|
|
|
|
|
|
|
#endif
|
uml: fix stub address calculations
The calculation of CONFIG_STUB_CODE and CONFIG_STUB_DATA didn't take into
account anything but 3G/1G and 2G/2G, leaving the other vmsplits out in the
cold.
I'd rather not duplicate the four known host vmsplit cases for each of these
symbols. I'd also like to calculate them based on the highest userspace
address.
The Kconfig language seems not to allow calculation of hex constants, so I
moved this to as-layout.h. CONFIG_STUB_CODE, CONFIG_STUB_DATA, and
CONFIG_STUB_START are now gone. In their place are STUB_CODE, STUB_DATA, and
STUB_START in as-layout.h.
i386 and x86_64 seem to differ as to whether an unadorned constant is an int
or a long, so I cast them to unsigned long so they can be printed
consistently. However, they are also used in stub.S, where C types don't work
so well. So, there are ASM_ versions of these constants for use in stub.S. I
also ifdef-ed the non-asm-friendly portion of as-layout.h.
With this in place, most of the rest of this patch is changing CONFIG_STUB_*
to STUB_*, except in stub.S, where they are changed to ASM_STUB_*.
defconfig has the old symbols deleted.
I also print these addresses out in case there is any problem mapping them on
the host.
The two stub.S files had some trailing whitespace, so that is cleaned up here.
[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-10-16 08:27:33 +00:00
|
|
|
|
|
|
|
#endif
|