Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 Apr 2003 16:06:56 -0700 (PDT)
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 29646 for review
Message-ID:  <200304242306.h3ON6ub7036418@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=29646

Change 29646 by peter@peter_daintree on 2003/04/24 16:06:40

	update for extra registers in struct reg, contexts and frames, as
	well as different delimiter markers

Affected files ...

.. //depot/projects/hammer/sys/x86_64/x86_64/machdep.c#77 edit

Differences ...

==== //depot/projects/hammer/sys/x86_64/x86_64/machdep.c#77 (text+ko) ====

@@ -244,8 +244,7 @@
 	sf.sf_uc.uc_stack.ss_flags = (p->p_flag & P_ALTSTACK)
 	    ? ((oonstack) ? SS_ONSTACK : 0) : SS_DISABLE;
 	sf.sf_uc.uc_mcontext.mc_onstack = (oonstack) ? 1 : 0;
-	sf.sf_uc.uc_mcontext.mc_gs = rgs();
-	bcopy(regs, &sf.sf_uc.uc_mcontext.mc_fs, sizeof(*regs));
+	bcopy(regs, &sf.sf_uc.uc_mcontext.mc_r15, sizeof(*regs));
 	sf.sf_uc.uc_mcontext.mc_len = sizeof(sf.sf_uc.uc_mcontext); /* magic */
 	get_fpcontext(td, &sf.sf_uc.uc_mcontext);
 	fpstate_drop(td);
@@ -371,7 +370,7 @@
 	ret = set_fpcontext(td, &ucp->uc_mcontext);
 	if (ret != 0)
 		return (ret);
-	bcopy(&ucp->uc_mcontext.mc_fs, regs, sizeof(*regs));
+	bcopy(&ucp->uc_mcontext.mc_r15, regs, sizeof(*regs));
 
 	PROC_LOCK(p);
 #if defined(COMPAT_43) || defined(COMPAT_SUNOS)
@@ -1292,6 +1291,14 @@
 	struct trapframe *tp;
 
 	tp = td->td_frame;
+	regs->r_r15 = tp->tf_r15;
+	regs->r_r14 = tp->tf_r14;
+	regs->r_r13 = tp->tf_r13;
+	regs->r_r12 = tp->tf_r12;
+	regs->r_r11 = tp->tf_r11;
+	regs->r_r10 = tp->tf_r10;
+	regs->r_r9  = tp->tf_r9;
+	regs->r_r8  = tp->tf_r8;
 	regs->r_rdi = tp->tf_rdi;
 	regs->r_rsi = tp->tf_rsi;
 	regs->r_rbp = tp->tf_rbp;
@@ -1318,6 +1325,14 @@
 	if (!EFL_SECURE(regs->r_rflags, tp->tf_rflags) ||
 	    !CS_SECURE(regs->r_cs))
 		return (EINVAL);
+	tp->tf_r15 = regs->r_r15;
+	tp->tf_r14 = regs->r_r14;
+	tp->tf_r13 = regs->r_r13;
+	tp->tf_r12 = regs->r_r12;
+	tp->tf_r11 = regs->r_r11;
+	tp->tf_r10 = regs->r_r10;
+	tp->tf_r9  = regs->r_r9;
+	tp->tf_r8  = regs->r_r8;
 	tp->tf_rdi = regs->r_rdi;
 	tp->tf_rsi = regs->r_rsi;
 	tp->tf_rbp = regs->r_rbp;
@@ -1417,6 +1432,14 @@
 	PROC_LOCK(curthread->td_proc);
 	mcp->mc_onstack = sigonstack(tp->tf_rsp);
 	PROC_UNLOCK(curthread->td_proc);
+	mcp->mc_r15 = tp->tf_r15;
+	mcp->mc_r14 = tp->tf_r14;
+	mcp->mc_r13 = tp->tf_r13;
+	mcp->mc_r12 = tp->tf_r12;
+	mcp->mc_r11 = tp->tf_r11;
+	mcp->mc_r10 = tp->tf_r10;
+	mcp->mc_r9  = tp->tf_r9;
+	mcp->mc_r8  = tp->tf_r8;
 	mcp->mc_rdi = tp->tf_rdi;
 	mcp->mc_rsi = tp->tf_rsi;
 	mcp->mc_rbp = tp->tf_rbp;
@@ -1453,6 +1476,14 @@
 	rflags = (mcp->mc_rflags & PSL_USERCHANGE) |
 	    (tp->tf_rflags & ~PSL_USERCHANGE);
 	if ((ret = set_fpcontext(td, mcp)) == 0) {
+		tp->tf_r15 = mcp->mc_r15;
+		tp->tf_r14 = mcp->mc_r14;
+		tp->tf_r13 = mcp->mc_r13;
+		tp->tf_r12 = mcp->mc_r12;
+		tp->tf_r11 = mcp->mc_r11;
+		tp->tf_r10 = mcp->mc_r10;
+		tp->tf_r9  = mcp->mc_r9;
+		tp->tf_r8  = mcp->mc_r8;
 		tp->tf_rdi = mcp->mc_rdi;
 		tp->tf_rsi = mcp->mc_rsi;
 		tp->tf_rbp = mcp->mc_rbp;



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