search for: fastcal

Displaying 20 results from an estimated 231 matches for "fastcal".

Did you mean: fastcall
2007 Apr 18
5
[PATCH] paravirt.h
...s the dumbest possible replacement of paravirtualized instructions: calls through a "paravirt_ops" structure. Currently these are function implementations of native hardware: hypervisors will override the ops structure with their own variants. All the pv-ops functions are declared "fastcall" so that a specific register-based ABI is used, to make inlining assember easier. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Chris Wright <chrisw@sous-sol.org> =================================================================== --- a/arch/i386/Kconfig ++...
2007 Apr 18
5
[PATCH] paravirt.h
...s the dumbest possible replacement of paravirtualized instructions: calls through a "paravirt_ops" structure. Currently these are function implementations of native hardware: hypervisors will override the ops structure with their own variants. All the pv-ops functions are declared "fastcall" so that a specific register-based ABI is used, to make inlining assember easier. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Chris Wright <chrisw@sous-sol.org> =================================================================== --- a/arch/i386/Kconfig ++...
2007 Apr 18
3
[PATCH 1/2] paravirt.h header
...s the dumbest possible replacement of paravirtualized instructions: calls through a "paravirt_ops" structure. Currently these are function implementations of native hardware: hypervisors will override the ops structure with their own variants. All the pv-ops functions are declared "fastcall" so that a specific register-based ABI is used, to make inlining assember easier. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com> Signed-off-by: Chris Wright <chrisw@sous-sol.org> --- arch/i386/Kconfig...
2007 Apr 18
1
[PATCH] paravirt build fix
...6/paravirt.h --- linux-pv-2.6.o/include/asm-i386/paravirt.h 2006-11-01 16:46:50.000000000 -0500 +++ linux-pv-2.6.x/include/asm-i386/paravirt.h 2006-11-01 16:57:47.000000000 -0500 @@ -176,18 +176,18 @@ extern struct paravirt_ops paravirt_ops; back-ends which don't need their own version. */ fastcall void native_clts(void); -fastcall unsigned int native_read_cr0(void); -fastcall void native_write_cr0(unsigned int val); +fastcall unsigned long native_read_cr0(void); +fastcall void native_write_cr0(unsigned long val); -fastcall unsigned int native_read_cr2(void); -fastcall void native_write_...
2007 Apr 18
1
[PATCH] paravirt build fix
...6/paravirt.h --- linux-pv-2.6.o/include/asm-i386/paravirt.h 2006-11-01 16:46:50.000000000 -0500 +++ linux-pv-2.6.x/include/asm-i386/paravirt.h 2006-11-01 16:57:47.000000000 -0500 @@ -176,18 +176,18 @@ extern struct paravirt_ops paravirt_ops; back-ends which don't need their own version. */ fastcall void native_clts(void); -fastcall unsigned int native_read_cr0(void); -fastcall void native_write_cr0(unsigned int val); +fastcall unsigned long native_read_cr0(void); +fastcall void native_write_cr0(unsigned long val); -fastcall unsigned int native_read_cr2(void); -fastcall void native_write_...
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
2007 Oct 05
5
[LLVMdev] RFC: Tail call optimization X86
...ke the behaviour dependent on the -tail- >>> call-opt flag. i am not sure that this is a good idea? >> >> In theory, any function can be marked fastcc. But llvm-gcc c / c++ >> frontend does *not* mark any external functions fastcc. > > The user can specify the "fastcall" and "stdcall" attributes, and it > looks > to me like llvm-gcc honors that. Certainly it should. This would imply one fastcc abi (callee pops args on return) to rule them all? That is only if fastcall translates to llvm fastcc of course. regards
2009 Apr 03
1
[LLVMdev] php crash
I tried the version you used, too. the resulting executable was still broken. I guess the reason is due to fastcall on function pointers, which Clang does not recognize. Consider the following snippet. #include <stdio.h> void __attribute__((fastcall)) f(int i) { printf("%d\n", i); } typedef void (*__attribute__((fastcall)) f_t)(int i); //typedef void __attribute__((fastcall)) (*f_t)(int...
2019 Sep 20
2
About detailed rule of fastcall
Hello. I'm trying to understand how fastcall works. As far as I know, first two integer type arguments are passed in ecx and edx. I tested several test, but the result was different from what I expected #1 typedef struct _data_t { int d; } data_t; void __attribute__((fastcall)) test_suuu(data_t s, unsigned int a, unsig...
2007 Oct 05
0
[LLVMdev] RFC: Tail call optimization X86
On Fri, 5 Oct 2007, Arnold Schwaighofer wrote: >> to me like llvm-gcc honors that. Certainly it should. > > This would imply one fastcc abi (callee pops args on return) to rule > them all? > That is only if fastcall translates to llvm fastcc of course. fastcall != fastcc. fastcall is a well defined convention on x86 that has very specific ABI requirements. fastcc, on the other hand, is an LLVM thing, and LLVM is allowed to "innovate" on the abi where it wants to. There is no requirement for L...
2012 Oct 19
4
[LLVMdev] How to represent __attribute__((fastcall)) functions in the IL
Functions with __attribute__((fastcall)) pop their arguments and take up to two arguments in ecx and edx. Currently we represent them by just setting the x86_fastcallcc calling convention. The problem is that the ABI has some strange conventions on when a register is used or not. For example: void __attribute__((fastcall)) foo1(int y)...
2012 Oct 19
0
[LLVMdev] How to represent __attribute__((fastcall)) functions in the IL
...ave any good ideas about how to do this, I'm just hoping someone does. End result might allow something like: declare void @foo(double inreg <eax,edx> %x) On Fri, Oct 19, 2012 at 8:17 AM, Rafael EspĂ­ndola < rafael.espindola at gmail.com> wrote: > Functions with __attribute__((fastcall)) pop their arguments and take > up to two arguments in ecx and edx. Currently we represent them by > just setting the x86_fastcallcc calling convention. The problem is > that the ABI has some strange conventions on when a register is used > or not. For example: > > void __attrib...
2008 Sep 30
2
[LLVMdev] Possible bug in x86 code generation for fastcall on gnu/linux
Hi, When compiling this function: __attribute__((fastcall)) int f(int x, int y) { return 0; } llvm 2.3 produces the following x86 assembler (with directives removed): f: xorl %eax, %eax ret $4 Where as GCC (version 4.2.3 (Ubuntu 4.2.3-2ubuntu7)) produces: f: xorl %eax, %eax ret Note the difference in ret. Functions calling a fastcall functi...
2013 Jan 10
1
[LLVMdev] attributes
...;. >>> If that's not up to date please let me know. >>> >>> -- Sean Silva >> Thanks. >> >> Not sure I understand the purpose of InheritableAttr . > InheritableAttr is related to our behavior for testcases like the following: > > __attribute((fastcall)) int f(void); > int f(void); > > (More generally, it looks like your attributes are very similar to the > fastcall attribute; just do what we do for the fastcall attribute, and > it'll be roughly correct.) > > -Eli Cool. What about let Subjects = [Function]; ??? is thi...
2007 Apr 18
0
[PATCH 4/5] Vmi.patch
...FUNC *)(rom->func)) (arg)) + +static struct vrom_header *vmi_rom; +static int license_gplok; +static int disable_nodelay; +static int disable_pge; +static int disable_pse; +static int disable_sep; +static int disable_tsc; +static int disable_mtrr; + +/* Cached VMI operations */ +struct { + void (fastcall *cpuid)(void /* non-c */); + void (fastcall *_set_ldt)(u32 selector); + void (fastcall *set_tr)(u32 selector); + void (fastcall *set_kernel_stack)(u32 selector, u32 esp0); + void (fastcall *allocate_page)(u32, u32, u32, u32, u32); + void (fastcall *release_page)(u32, u32); + void (fastcall *set_pt...
2007 Apr 18
0
[PATCH 4/5] Vmi.patch
...FUNC *)(rom->func)) (arg)) + +static struct vrom_header *vmi_rom; +static int license_gplok; +static int disable_nodelay; +static int disable_pge; +static int disable_pse; +static int disable_sep; +static int disable_tsc; +static int disable_mtrr; + +/* Cached VMI operations */ +struct { + void (fastcall *cpuid)(void /* non-c */); + void (fastcall *_set_ldt)(u32 selector); + void (fastcall *set_tr)(u32 selector); + void (fastcall *set_kernel_stack)(u32 selector, u32 esp0); + void (fastcall *allocate_page)(u32, u32, u32, u32, u32); + void (fastcall *release_page)(u32, u32); + void (fastcall *set_pt...
2007 Apr 18
0
[PATCH 5/6] VMI backend for paravirt-ops
...FUNC *)(rom->func)) (arg)) + +static struct vrom_header *vmi_rom; +static int license_gplok; +static int disable_nodelay; +static int disable_pge; +static int disable_pse; +static int disable_sep; +static int disable_tsc; +static int disable_mtrr; + +/* Cached VMI operations */ +struct { + void (fastcall *cpuid)(void /* non-c */); + void (fastcall *_set_ldt)(u32 selector); + void (fastcall *set_tr)(u32 selector); + void (fastcall *set_kernel_stack)(u32 selector, u32 esp0); + void (fastcall *allocate_page)(u32, u32, u32, u32, u32); + void (fastcall *release_page)(u32, u32); + void (fastcall *set_pt...
2007 Apr 18
0
[PATCH 5/6] VMI backend for paravirt-ops
...FUNC *)(rom->func)) (arg)) + +static struct vrom_header *vmi_rom; +static int license_gplok; +static int disable_nodelay; +static int disable_pge; +static int disable_pse; +static int disable_sep; +static int disable_tsc; +static int disable_mtrr; + +/* Cached VMI operations */ +struct { + void (fastcall *cpuid)(void /* non-c */); + void (fastcall *_set_ldt)(u32 selector); + void (fastcall *set_tr)(u32 selector); + void (fastcall *set_kernel_stack)(u32 selector, u32 esp0); + void (fastcall *allocate_page)(u32, u32, u32, u32, u32); + void (fastcall *release_page)(u32, u32); + void (fastcall *set_pt...
2007 Apr 18
0
[PATCH 1/5] Paravirt page alloc.patch
...); + } /* in the non-PAE case, free_pgtables() clears user pgd entries */ kmem_cache_free(pgd_cache, pgd); } =================================================================== --- a/include/asm-i386/paravirt.h +++ b/include/asm-i386/paravirt.h @@ -126,6 +126,12 @@ struct paravirt_ops void (fastcall *flush_tlb_user)(void); void (fastcall *flush_tlb_kernel)(void); void (fastcall *flush_tlb_single)(u32 addr); + + void (fastcall *alloc_pt)(u32 pfn); + void (fastcall *alloc_pd)(u32 pfn); + void (fastcall *alloc_pd_clone)(u32 pfn, u32 clonepfn, u32 start, u32 count); + void (fastcall *release_...