Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 31 Oct 2012 21:27:15 +0000 (UTC)
From:      "Cherry G. Mathew" <cherry@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r242415 - projects/amd64_xen_pv/sys/amd64/xen
Message-ID:  <201210312127.q9VLRFqe034754@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: cherry
Date: Wed Oct 31 21:27:15 2012
New Revision: 242415
URL: http://svn.freebsd.org/changeset/base/242415

Log:
  Align the kernel stack to 16 bytes, and notify Xen of our kernel %rsp
  
  Approved by: gibbs (implicit)

Modified:
  projects/amd64_xen_pv/sys/amd64/xen/machdep.c

Modified: projects/amd64_xen_pv/sys/amd64/xen/machdep.c
==============================================================================
--- projects/amd64_xen_pv/sys/amd64/xen/machdep.c	Wed Oct 31 21:24:31 2012	(r242414)
+++ projects/amd64_xen_pv/sys/amd64/xen/machdep.c	Wed Oct 31 21:27:15 2012	(r242415)
@@ -534,13 +534,16 @@ initxen(struct start_info *si)
 	PCPU_SET(rsp0, (vm_offset_t) thread0.td_pcb & ~0xFul /* 16 byte aligned */);
 	PCPU_SET(curpcb, thread0.td_pcb);
 
+        HYPERVISOR_stack_switch(GSEL(GDATA_SEL, SEL_KPL), 
+		(unsigned long) PCPU_GET(rsp0)); /* Tell xen about the kernel stack */
+
 	/* setup user mode selector glue */
 	_ucodesel = GSEL(GUCODE_SEL, SEL_UPL);
 	_udatasel = GSEL(GUDATA_SEL, SEL_UPL);
 	_ufssel = GSEL(GUFS32_SEL, SEL_UPL);
 	_ugssel = GSEL(GUGS32_SEL, SEL_UPL);
 
-	return (u_int64_t) thread0.td_pcb;
+	return (u_int64_t) thread0.td_pcb  & ~0xFul /* 16 byte aligned */;
 }
 
 /*



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201210312127.q9VLRFqe034754>