[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V4 02/15] Move x86 specific funtions/variables to arch header
>>> On 10.09.14 at 02:51, <roy.franz@xxxxxxxxxx> wrote: > -/* Using SetVirtualAddressMap() is incompatible with kexec: */ > -#undef USE_SET_VIRTUAL_ADDRESS_MAP In which way is this arch-specific? > @@ -41,8 +31,10 @@ typedef struct { > EFI_SHIM_LOCK_VERIFY Verify; > } EFI_SHIM_LOCK_PROTOCOL; > > -extern char start[]; > -extern u32 cpuid_ext_features; > +static CHAR16 *__init FormatDec(UINT64 Val, CHAR16 *Buffer); > +static CHAR16 *__init FormatHex(UINT64 Val, UINTN Width, CHAR16 *Buffer); > +static void __init DisplayUint(UINT64 Val, INTN Width); > +static CHAR16 *__init wstrcpy(CHAR16 *d, const CHAR16 *s); Why do you need these declarations? And if you need them, no __init annotations here please (they only belong on the definitions). > -static void __init place_string(u32 *addr, const char *s) > -{ > - static char *__initdata alloc = start; > - > - if ( s && *s ) > - { > - size_t len1 = strlen(s) + 1; > - const char *old = (char *)(long)*addr; > - size_t len2 = *addr ? strlen(old) + 1 : 0; > - > - alloc -= len1 + len2; > - /* > - * Insert new string before already existing one. This is needed > - * for options passed on the command line to override options from > - * the configuration file. > - */ > - memcpy(alloc, s, len1); > - if ( *addr ) > - { > - alloc[len1 - 1] = ' '; > - memcpy(alloc + len1, old, len2); > - } > - } > - *addr = (long)alloc; > -} How much of this is really arch-specific? > -static void __init setup_efi_pci(void) And this doesn't seem arch-specific either (it only depends on HAS_PCI or some such). > -static void __init relocate_image(unsigned long delta) I can see that some of this may need an arch abstraction, but why would you not want to do this on ARM (or elsewhere)? In fact - how do you get away without? > --- /dev/null > +++ b/xen/include/asm-x86/efi-boot.h > @@ -0,0 +1,451 @@ > +/* > + * Architecture specific implementation for EFI boot code. This file > + * is intended to be included by XXX _only_, and therefore can define > + * arch specific global variables. > + */ > +#include <asm/e820.h> > +#include <asm/edd.h> > +#define __ASSEMBLY__ /* avoid pulling in ACPI stuff (conflicts with EFI) */ > +#include <asm/fixmap.h> > +#undef __ASSEMBLY__ > +#include <asm/msr.h> > +#include <asm/processor.h> > + > +static struct file __initdata ucode; > +static multiboot_info_t __initdata mbi = { > + .flags = MBI_MODULES | MBI_LOADERNAME > +}; > +static module_t __initdata mb_modules[3]; > + > +static void noreturn blexit(const CHAR16 *str); > +static void PrintErrMesg(const CHAR16 *mesg, EFI_STATUS ErrCode); What are these two doing here? > +void __init efi_init_memory(void) Now that I look at it again, I think a good part of this is arch- independent too. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |