Date: Fri, 25 Jul 2014 15:21:31 GMT From: op@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r271367 - soc2014/op/freebsd-base/sys/amd64/amd64 Message-ID: <201407251521.s6PFLVuV065663@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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@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)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201407251521.s6PFLVuV065663>