socsvn commit: r271367 - soc2014/op/freebsd-base/sys/amd64/amd64
op at FreeBSD.org
op at FreeBSD.org
Fri Jul 25 15:21:31 UTC 2014
Author: op
Date: Fri Jul 25 15:21:30 2014
New Revision: 271367
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=271367
Log:
KSP SMAP: use selfpatch for stac, clac in amd64/support.S
Signed-off-by: Oliver Pinter <oliver.pntr at gmail.com>
git: https://github.com/opntr/opBSD/tree/op/gsoc2014/smap+kpatch
Modified:
soc2014/op/freebsd-base/sys/amd64/amd64/support.S
Modified: soc2014/op/freebsd-base/sys/amd64/amd64/support.S
==============================================================================
--- soc2014/op/freebsd-base/sys/amd64/amd64/support.S Fri Jul 25 15:12:49 2014 (r271366)
+++ soc2014/op/freebsd-base/sys/amd64/amd64/support.S Fri Jul 25 15:21:30 2014 (r271367)
@@ -35,6 +35,8 @@
#include <machine/asmacros.h>
#include <machine/intr_machdep.h>
#include <machine/pmap.h>
+#include <machine/specialreg.h>
+#include <machine/selfpatch-asmacros.h>
#include "assym.s"
@@ -247,16 +249,16 @@
shrq $3,%rcx
cld
- stac /* open user-space */
+ _stac /* open user-space */
rep
movsq
- clac /* close user-space */
+ _clac /* close user-space */
movb %dl,%cl
andb $7,%cl
- stac /* open user-space */
+ _stac /* open user-space */
rep
movsb
- clac /* close user-space */
+ _clac /* close user-space */
done_copyout:
xorl %eax,%eax
@@ -300,16 +302,16 @@
movb %cl,%al
shrq $3,%rcx /* copy longword-wise */
cld
- stac /* open user-space */
+ _stac /* open user-space */
rep
movsq
- clac /* close user-space */
+ _clac /* close user-space */
movb %al,%cl
andb $7,%cl /* copy remaining bytes */
- stac /* open user-space */
+ _stac /* open user-space */
rep
movsb
- clac /* close user-space */
+ _clac /* close user-space */
done_copyin:
xorl %eax,%eax
@@ -341,12 +343,12 @@
ja fusufault
movl %esi,%eax /* old */
- stac /* open user-space */
+ _stac /* open user-space */
#ifdef SMP
lock
#endif
cmpxchgl %edx,(%rdi) /* new = %edx */
- clac /* close user-space */
+ _clac /* close user-space */
/*
* The old value is in %eax. If the store succeeded it will be the
@@ -372,12 +374,12 @@
ja fusufault
movq %rsi,%rax /* old */
- stac /* open user-space */
+ _stac /* open user-space */
#ifdef SMP
lock
#endif
cmpxchgq %rdx,(%rdi) /* new = %rdx */
- clac /* close user-space */
+ _clac /* close user-space */
/*
* The old value is in %eax. If the store succeeded it will be the
@@ -406,9 +408,9 @@
cmpq %rax,%rdi /* verify address is valid */
ja fusufault
- stac /* open user-space */
+ _stac /* open user-space */
movq (%rdi),%rax
- clac /* close user-space */
+ _clac /* close user-space */
movq $0,PCB_ONFAULT(%rcx)
ret
END(fuword64)
@@ -422,9 +424,9 @@
cmpq %rax,%rdi /* verify address is valid */
ja fusufault
- stac /* open user-space */
+ _stac /* open user-space */
movl (%rdi),%eax
- clac /* close user-space */
+ _clac /* close user-space */
movq $0,PCB_ONFAULT(%rcx)
ret
END(fuword32)
@@ -451,9 +453,9 @@
cmpq %rax,%rdi
ja fusufault
- stac /* open user-space */
+ _stac /* open user-space */
movzwl (%rdi),%eax
- clac /* close user-space */
+ _clac /* close user-space */
movq $0,PCB_ONFAULT(%rcx)
ret
END(fuword16)
@@ -466,9 +468,9 @@
cmpq %rax,%rdi
ja fusufault
- stac /* open user-space */
+ _stac /* open user-space */
movzbl (%rdi),%eax
- clac /* close user-space */
+ _clac /* close user-space */
movq $0,PCB_ONFAULT(%rcx)
ret
END(fubyte)
@@ -498,9 +500,9 @@
cmpq %rax,%rdi /* verify address validity */
ja fusufault
- stac /* open user-space */
+ _stac /* open user-space */
movq %rsi,(%rdi)
- clac /* close user-space */
+ _clac /* close user-space */
xorl %eax,%eax
movq PCPU(CURPCB),%rcx
movq %rax,PCB_ONFAULT(%rcx)
@@ -516,9 +518,9 @@
cmpq %rax,%rdi /* verify address validity */
ja fusufault
- stac /* open user-space */
+ _stac /* open user-space */
movl %esi,(%rdi)
- clac /* close user-space */
+ _clac /* close user-space */
xorl %eax,%eax
movq PCPU(CURPCB),%rcx
movq %rax,PCB_ONFAULT(%rcx)
@@ -533,9 +535,9 @@
cmpq %rax,%rdi /* verify address validity */
ja fusufault
- stac /* open user-space */
+ _stac /* open user-space */
movw %si,(%rdi)
- clac /* close user-space */
+ _clac /* close user-space */
xorl %eax,%eax
movq PCPU(CURPCB),%rcx /* restore trashed register */
movq %rax,PCB_ONFAULT(%rcx)
@@ -551,9 +553,9 @@
ja fusufault
movl %esi,%eax
- stac /* open user-space */
+ _stac /* open user-space */
movb %al,(%rdi)
- clac /* close user-space */
+ _clac /* close user-space */
xorl %eax,%eax
movq PCPU(CURPCB),%rcx /* restore trashed register */
movq %rax,PCB_ONFAULT(%rcx)
@@ -595,9 +597,9 @@
decq %rdx
jz 3f
- stac /* open user-space */
+ _stac /* open user-space */
lodsb
- clac /* close user-space */
+ _clac /* close user-space */
stosb
orb %al,%al
jnz 2b
@@ -626,9 +628,9 @@
testq %r9,%r9
jz 1f
subq %rdx,%r8
- stac /* open user-space */
+ _stac /* open user-space */
movq %r8,(%r9)
- clac /* close user-space */
+ _clac /* close user-space */
1:
ret
END(copyinstr)
More information about the svn-soc-all
mailing list