2006-07-27 Arjan van de Ven <arjan@linux.intel.com>
* config/i386/i386.md (stack_tls_protect_set_di) Use %gs rather than %fs for -mcmodel=kernel. (stack_tls_protect_test_di): Likewise. * testsuite/gcc.target/i386/stack-prot-kernel.c: New test. From-SVN: r115782
This commit is contained in:
parent
ab7efd9148
commit
fa6adcab9d
|
@ -1,3 +1,9 @@
|
|||
2006-07-27 Arjan van de Ven <arjan@linux.intel.com>
|
||||
|
||||
* config/i386/i386.md (stack_tls_protect_set_di) Use %gs rather than
|
||||
%fs for -mcmodel=kernel.
|
||||
(stack_tls_protect_test_di): Likewise.
|
||||
|
||||
2006-07-27 Carlos O'Donell <carlos@codesourcery.com>
|
||||
|
||||
* Makefile.in: Use mkinstalldirs.
|
||||
|
|
|
@ -20393,7 +20393,15 @@
|
|||
(set (match_scratch:DI 2 "=&r") (const_int 0))
|
||||
(clobber (reg:CC FLAGS_REG))]
|
||||
"TARGET_64BIT"
|
||||
"mov{q}\t{%%fs:%P1, %2|%2, QWORD PTR %%fs:%P1}\;mov{q}\t{%2, %0|%0, %2}\;xor{l}\t%k2, %k2"
|
||||
{
|
||||
/* The kernel uses a different segment register for performance reasons; a
|
||||
system call would not have to trash the userspace segment register,
|
||||
which would be expensive */
|
||||
if (ix86_cmodel != CM_KERNEL)
|
||||
return "mov{q}\t{%%fs:%P1, %2|%2, QWORD PTR %%fs:%P1}\;mov{q}\t{%2, %0|%0, %2}\;xor{l}\t%k2, %k2";
|
||||
else
|
||||
return "mov{q}\t{%%gs:%P1, %2|%2, QWORD PTR %%gs:%P1}\;mov{q}\t{%2, %0|%0, %2}\;xor{l}\t%k2, %k2";
|
||||
}
|
||||
[(set_attr "type" "multi")])
|
||||
|
||||
(define_expand "stack_protect_test"
|
||||
|
@ -20461,7 +20469,15 @@
|
|||
UNSPEC_SP_TLS_TEST))
|
||||
(clobber (match_scratch:DI 3 "=r"))]
|
||||
"TARGET_64BIT"
|
||||
"mov{q}\t{%1, %3|%3, %1}\;xor{q}\t{%%fs:%P2, %3|%3, QWORD PTR %%fs:%P2}"
|
||||
{
|
||||
/* The kernel uses a different segment register for performance reasons; a
|
||||
system call would not have to trash the userspace segment register,
|
||||
which would be expensive */
|
||||
if (ix86_cmodel != CM_KERNEL)
|
||||
return "mov{q}\t{%1, %3|%3, %1}\;xor{q}\t{%%fs:%P2, %3|%3, QWORD PTR %%fs:%P2}";
|
||||
else
|
||||
return "mov{q}\t{%1, %3|%3, %1}\;xor{q}\t{%%gs:%P2, %3|%3, QWORD PTR %%gs:%P2}";
|
||||
}
|
||||
[(set_attr "type" "multi")])
|
||||
|
||||
(include "sse.md")
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2006-07-27 Arjan van de Ven <arjan@linux.intel.com>
|
||||
|
||||
* gcc.target/i386/stack-prot-kernel.c: New test.
|
||||
|
||||
2006-07-27 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
* gcc.dg/builtins-55.c: New test case.
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
/* { dg-do compile { target lp64 } } */
|
||||
/* { dg-options "-O2 -fstack-protector-all -mcmodel=kernel" } */
|
||||
|
||||
void test1 (int x)
|
||||
{
|
||||
char p[40];
|
||||
int i;
|
||||
for (i=0; i<40; i++)
|
||||
p[i] = x;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler-not "%fs" } } */
|
Loading…
Reference in New Issue