Why does dump_stack need asmlinkage?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all:

asmlinkage is only defined in arch ia64 and x86_32:
1. arch/x86/include/asm/linkage.h:
#ifdef CONFIG_X86_32
#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))
#endif /* CONFIG_X86_32 */

2. arch/ia64/include/asm/linkage.h:
#define asmlinkage CPP_ASMLINKAGE __attribute__((syscall_linkage))

3. arch independent include/linux/linkage.h:
#ifdef __cplusplus
#define CPP_ASMLINKAGE extern "C"
#else
#define CPP_ASMLINKAGE
#endif

#ifndef asmlinkage
#define asmlinkage CPP_ASMLINKAGE
#endif

As kernelnewbies FAQ(https://kernelnewbies.org/FAQ/asmlinkage) said, in short, asmlinkage tells your compiler to look on the CPU stack for the function parameters, instead of registers.

So, there are two questions:
1. asmlinkage is only defined in x86_32 and ia64, what about other archs? How do they achieve the same effect as mentioned above?
2. "asmlinkage __visible void dump_stack(void)", dump_stack does not have any parameter, so why do it need asmlinkage?

Thanks!
Lv Ying

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]

  Powered by Linux