search for: pushl

Displaying 20 results from an estimated 319 matches for "pushl".

2014 Dec 21
5
[LLVMdev] [RFC] [X86] Mov to push transformation in x86-32 call sequences
...sformation of MOV instructions that push function arguments onto the stack into actual PUSH instructions. For example, it will transform this: subl $16, %esp movl $4, 12(%esp) movl $3, 8(%esp) movl $2, 4(%esp) movl $1, (%esp) calll _func addl $16, %esp Into this: pushl $4 pushl $3 pushl $2 pushl $1 calll _func addl $16, %esp The main motivation for this is code size (a "pushl $4" is 2 bytes, a "movl $4, 12(%esp)" is 7 bytes), but there are some other advantages, as shown below. The way this works in r223757 is by intercep...
2007 Apr 18
1
[PATCH] (with benchmarks) binary patching of paravirt_ops call sites
...byte " __stringify(typenum) "\n" \ + " .byte 772b-771b\n" \ + ".previous" + +static inline unsigned long __local_save_flags(void) +{ + register unsigned long f asm("eax"); + /* Asm is to place value in eax. */ + __asm__ __volatile__(paravirt_alt("pushl %%ecx; pushl %%edx\n\t" + "call *%1\n\t" + "popl %%edx; popl %%ecx", + PARAVIRT_SAVE_FLAGS) + : "=r"(f): "m"(paravirt_ops.save_fl) : "memory"); + return f; +} + +static inline void __local_irq_restore(unsigned long f) +...
2007 Apr 18
1
[PATCH] (with benchmarks) binary patching of paravirt_ops call sites
...byte " __stringify(typenum) "\n" \ + " .byte 772b-771b\n" \ + ".previous" + +static inline unsigned long __local_save_flags(void) +{ + register unsigned long f asm("eax"); + /* Asm is to place value in eax. */ + __asm__ __volatile__(paravirt_alt("pushl %%ecx; pushl %%edx\n\t" + "call *%1\n\t" + "popl %%edx; popl %%ecx", + PARAVIRT_SAVE_FLAGS) + : "=r"(f): "m"(paravirt_ops.save_fl) : "memory"); + return f; +} + +static inline void __local_irq_restore(unsigned long f) +...
2014 Dec 21
2
[LLVMdev] [RFC] [X86] Mov to push transformation in x86-32 call sequences
...sformation of MOV instructions that push function arguments onto the stack into actual PUSH instructions. For example, it will transform this: subl $16, %esp movl $4, 12(%esp) movl $3, 8(%esp) movl $2, 4(%esp) movl $1, (%esp) calll _func addl $16, %esp Into this: pushl $4 pushl $3 pushl $2 pushl $1 calll _func addl $16, %esp The main motivation for this is code size (a "pushl $4" is 2 bytes, a "movl $4, 12(%esp)" is 7 bytes), but there are some other advantages, as shown below. The way this works in r223757 is by intercep...
2007 Apr 18
3
[PATCH 1/2] paravirt.h header
...========== --- a/arch/i386/kernel/entry.S +++ b/arch/i386/kernel/entry.S @@ -803,6 +803,15 @@ 1: INTERRUPT_RETURN .long 1b,iret_exc .previous +#ifdef CONFIG_PARAVIRT +ENTRY(nopara_iret) + iret + +ENTRY(nopara_irq_enable_sysexit) + sti + sysexit +#endif + KPROBE_ENTRY(int3) RING0_INT_FRAME pushl $-1 # mark this as an int =================================================================== --- a/include/asm-i386/msr.h +++ b/include/asm-i386/msr.h @@ -1,5 +1,9 @@ #ifndef __ASM_MSR_H #define __ASM_MSR_H + +#ifdef CONFIG_PARAVIRT +#include <asm/paravirt.h> +#else /* * Access to m...
2009 Aug 18
0
[LLVMdev] Build issues on Solaris
Hello, Nathan > or if it should be a configure test, which might be safer. Are there > any x86 platforms (other than apple) that don't need PLT-indirect calls? Yes, mingw. However just tweaking the define is not enough - we're not loading address of GOT into ebx before the call (on 32 bit ABIs) thus the call will be to nowhere. -- With best regards, Anton Korobeynikov Faculty of
2009 Aug 25
2
[LLVMdev] Build issues on Solaris
...n" ".align 8\n" ".globl " ASMPREFIX "X86CompilationCallback\n" + ".local .local_got_stub\n" TYPE_FUNCTION(X86CompilationCallback) ASMPREFIX "X86CompilationCallback:\n" CFI(".cfi_startproc\n") "pushl %ebp\n" + CFI(".cfi_def_cfa_offset 12\n") + CFI(".cfi_offset %ebp, -12\n") + "movl %esp, %ebp\n" // Standard prologue + CFI(".cfi_def_cfa_register %ebp\n") + "pushl %eax\n" + CFI(".cfi_rel_offset %eax, 0\n"...
2007 Apr 18
8
[PATCH 0/7] x86 paravirtualization infrastructure
The following patches introduce the core infrastructure needed to paravirtualize the 32-bit x86 Linux kernel. This is done by moving virtualization sensitive insn's or code paths to a function table, paravirt_ops. This structure can be populated with hypervisor specific calls or native stubs and currently support running on bare metal, VMI, Xen, or Lhype. These patches apply to
2007 Apr 18
8
[PATCH 0/7] x86 paravirtualization infrastructure
The following patches introduce the core infrastructure needed to paravirtualize the 32-bit x86 Linux kernel. This is done by moving virtualization sensitive insn's or code paths to a function table, paravirt_ops. This structure can be populated with hypervisor specific calls or native stubs and currently support running on bare metal, VMI, Xen, or Lhype. These patches apply to
2008 Feb 27
2
[LLVMdev] llvm/test: suffix or operands invalid for `push'
On Feb 27, 2008, at 2:12 PM, Joachim Durchholz wrote: > Some additional info: > > I just found the .s files mentioned in the error message, and checked > them. All error messages refer to one of the following four > instructions: > pushl %ebp > pushl %esi > popl %ebp > popl %esi > It's always the same error, "suffix or operands invalid for > `push'" (resp `pop'). Those are valid instructions in every x86-32 assembler I'm aware of. Perhaps it needs a switch to put it in 32-bit mode? Pe...
2008 Feb 27
0
[LLVMdev] llvm/test: suffix or operands invalid for `push'
Some additional info: I just found the .s files mentioned in the error message, and checked them. All error messages refer to one of the following four instructions: pushl %ebp pushl %esi popl %ebp popl %esi It's always the same error, "suffix or operands invalid for `push'" (resp `pop'). There are no other push or pop instructions in any .s file. 2006-11-06-StackTrace is not listed during testing, and generates no error messages. All oth...
2018 Aug 06
4
[Release-testers] [7.0.0 Release] rc1 has been tagged
On Sun, Aug 5, 2018 at 5:49 PM, Dimitry Andric <dimitry at andric.com> wrote: > On 3 Aug 2018, at 13:37, Hans Wennborg via Release-testers <release-testers at lists.llvm.org> wrote: >> >> 7.0.0-rc1 was just tagged (from the branch at r338847). >> >> It's early in the release process, but I'd like to find out what the >> status is of the branch
2019 Aug 08
2
Suboptimal code generated by clang+llc in quite a common scenario (?)
...8, !tbaa !11 %arrayidx2 = getelementptr inbounds i8, i8* %2, i64 2 store i8 %k, i8* %arrayidx2, align 1, !tbaa !13 ret i32 0 } According to that, the variable ‘scscx’ is loaded three times despite it’s never modified. The resulting assembly code is this: .globl _tst _tst: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset %ebp, -8 movl %esp, %ebp .cfi_def_cfa_register %ebp pushl %esi .cfi_offset %esi, -12 movb 16(%ebp), %al movb 12(%ebp), %cl movb 8(%ebp), %dl movl _scscx, %esi movb %dl, (%esi) movl _scscx, %edx movb %cl, 1(%edx) movl _scscx, %ecx movb %al, 2(%ec...
2016 Apr 04
2
How to call an (x86) cleanup/catchpad funclet
...d llvm to emit vc++ compatible SEH structures for my personality on x86/Windows and my handler works fine, but the only thing I can't figure out is how to call these funclets, they look like: Catch: "?catch$3@?0?m3 at 4HA": LBB4_3: # %BasicBlock26 pushl %ebp pushl %eax addl $12, %ebp movl %esp, -28(%ebp) movl $LBB4_5, %eax addl $4, %esp popl %ebp retl # CATCHRET cleanup: "?dtor$2@?0?m2 at 4HA": LBB3_2: pushl %ebp subl $8, %esp addl $12, %ebp movl %ebp, %eax movl %esp, %ecx movl %eax, 4(%ecx) mov...
2007 Apr 18
5
[PATCH] paravirt.h
...9,6 +802,19 @@ 1: INTERRUPT_RETURN .long 1b,iret_exc .previous +#ifdef CONFIG_PARAVIRT +ENTRY(nopara_iret) +1: iret +.section __ex_table,"a" + .align 4 + .long 1b,iret_exc +.previous + +ENTRY(nopara_irq_enable_sysexit) + sti + sysexit +#endif + KPROBE_ENTRY(int3) RING0_INT_FRAME pushl $-1 # mark this as an int =================================================================== --- a/include/asm-i386/desc.h +++ b/include/asm-i386/desc.h @@ -64,6 +64,9 @@ static inline void pack_gate(__u32 *a, _ #define DESCTYPE_DPL3 0x60 /* DPL-3 */ #define DESCTYPE_S 0x10 /* !system */ +#i...
2007 Apr 18
5
[PATCH] paravirt.h
...9,6 +802,19 @@ 1: INTERRUPT_RETURN .long 1b,iret_exc .previous +#ifdef CONFIG_PARAVIRT +ENTRY(nopara_iret) +1: iret +.section __ex_table,"a" + .align 4 + .long 1b,iret_exc +.previous + +ENTRY(nopara_irq_enable_sysexit) + sti + sysexit +#endif + KPROBE_ENTRY(int3) RING0_INT_FRAME pushl $-1 # mark this as an int =================================================================== --- a/include/asm-i386/desc.h +++ b/include/asm-i386/desc.h @@ -64,6 +64,9 @@ static inline void pack_gate(__u32 *a, _ #define DESCTYPE_DPL3 0x60 /* DPL-3 */ #define DESCTYPE_S 0x10 /* !system */ +#i...
2016 May 31
0
How to avoid register spills at wide integer addition?
...d integer register. Then, I make a sample code: >cat t.ll define void @add512(i512*noalias %pz, i512*noalias %px, i512*noalias %py) { %x = load i512* %px %y = load i512* %py %z = add i512 %x, %y store i512 %z, i512* %pz ret void } >llc-3.6 -O3 -march=x86 t.ll -o - add512: pushl %ebp pushl %ebx pushl %edi pushl %esi subl $56, %esp movl 84(%esp), %eax movl 80(%esp), %edi movl 8(%edi), %esi movl (%edi), %edx movl 4(%edi), %ebx movl 60(%eax), %ecx movl %ecx,...
2007 Apr 18
1
[PATCH 0/10] lguest
This patch series is against 2.6.20; some things are in flux, so there might be issues as other things flow into the latest -git tree. >From the documentation: Lguest is designed to be a minimal hypervisor for the Linux kernel, for Linux developers and users to experiment with virtualization with the minimum of complexity. Nonetheless, it should have sufficient features to make it useful for
2007 Apr 18
1
[PATCH 0/10] lguest
This patch series is against 2.6.20; some things are in flux, so there might be issues as other things flow into the latest -git tree. >From the documentation: Lguest is designed to be a minimal hypervisor for the Linux kernel, for Linux developers and users to experiment with virtualization with the minimum of complexity. Nonetheless, it should have sufficient features to make it useful for
2008 Jun 11
0
[LLVMdev] Miscompilation on MingW32
...last alloca. The first movl after the two addl is using a wrong address to store the result (%esp points to %dummy, but the result should not be stored there). ------------------------------------------------------------------------ .text .align 16 .def _tmp; .scl 3; .type 32; .endef _tmp: pushl %ebp Llabel1: movl %esp, %ebp Llabel2: pushl %ebx pushl %edi pushl %esi subl $4, %esp LBB1_1: # entry2 movl $8, %esi movl %esi, %eax call __alloca movl %esp, %edi movl %esi, %eax call __alloca movl %esp, %ebx movl %esi, %eax call __alloca movl %esp, -16(%ebp) movl %esi, %eax call _...