This hook will only be implemented for bare metal, Xen doesn't require
any bootstrap code since APs are started in long mode with paging
enabled.
---
 sys/amd64/amd64/machdep.c   |    6 +++++-
 sys/amd64/include/sysarch.h |    1 +
 2 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c
index 64df89a..3a2db30 100644
--- a/sys/amd64/amd64/machdep.c
+++ b/sys/amd64/amd64/machdep.c
@@ -178,6 +178,9 @@ struct init_ops init_ops = {
        .early_delay_init =     i8254_init,
        .early_delay =          i8254_delay,
        .parse_memmap =         native_parse_memmap,
+#ifdef SMP
+       .mp_bootaddress =       mp_bootaddress,
+#endif
 };
 
 /*
@@ -1492,7 +1495,8 @@ getmemsize(caddr_t kmdp, u_int64_t first)
 
 #ifdef SMP
        /* make hole for AP bootstrap code */
-       physmap[1] = mp_bootaddress(physmap[1] / 1024);
+       if (init_ops.mp_bootaddress)
+               physmap[1] = init_ops.mp_bootaddress(physmap[1] / 1024);
 #endif
 
        /*
diff --git a/sys/amd64/include/sysarch.h b/sys/amd64/include/sysarch.h
index 084223e..7696064 100644
--- a/sys/amd64/include/sysarch.h
+++ b/sys/amd64/include/sysarch.h
@@ -16,6 +16,7 @@ struct init_ops {
        void    (*early_delay_init)(void);
        void    (*early_delay)(int);
        void    (*parse_memmap)(caddr_t, vm_paddr_t *, int *);
+       u_int   (*mp_bootaddress)(u_int);
 };
 
 extern struct init_ops init_ops;
-- 
1.7.7.5 (Apple Git-26)

_______________________________________________
freebsd-xen@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-xen
To unsubscribe, send any mail to "freebsd-xen-unsubscr...@freebsd.org"

Reply via email to