memcheck/tests/sh-mem-random.c: Set huge_addr to 240GB
[valgrind.git] / memcheck / tests / x86 / pushfpopf_s.S
blob37816898e78c95f011eff7cebbd174031f1cee21
1 #include "tests/asm.h"
3 #if defined(VGO_linux) || defined(VGO_solaris) || defined(VGO_freebsd)
4         .version        "01.01"
5 #endif
6 gcc2_compiled.:
7 .text
8         .align 4
9 .globl VG_SYM_ASM(fooble)
10 #if defined(VGO_linux) || defined(VGO_solaris) || defined(VGO_freebsd)
11         .type   VG_SYM_ASM(fooble),@function
12 #endif
13 VG_SYM_ASM(fooble):
14         pushl   %ebp
15         movl    %esp, %ebp
16         movl    8(%ebp), %eax
17         
18         subl    12(%ebp), %eax
19         # flags are now undef if either operand is
20         # save possibly undef flags on stack
21         pushfl
22         
23         movl    $0, %eax
24         addl    $0, %eax
25         # flags are now definitely defined
27         popfl
28         # resulting flag definedness depends on outcome of sub above
29         # should override that created by 0 + 0 above
30         # because Vex does an emulation-warning check on the popfl,
31         # an error should be reported for the popfl
32         
33         # now use the condition codes to generate a value
34         # in a way which will cause undefinedness to get reported
35         # (a second time)
36         jz      labelz
37         movl    $22, %eax
38         jmp     theend
39 labelz:
40         movl    $33, %eax
41 theend: 
42         popl    %ebp
43         ret
44 .Lfe1:
45 #if defined(VGO_linux) || defined(VGO_solaris) || defined(VGO_freebsd)
46         .size   VG_SYM_ASM(fooble),.Lfe1-VG_SYM_ASM(fooble)
47 #endif
48         .ident  "GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.1 2.96-98)"