Module Name: src Committed By: matt Date: Wed Aug 7 17:09:50 UTC 2013
Modified Files: src/sys/arch/arm/include: asm.h Log Message: Add KMODTRAMPOLINE(name) There are 3 variations: one for armv7 using movw ip,#:lower16:func; movt ip,#:upper16:func; bx ip one for armv4t+ using ldr ip, pc; bx ip; .word func one for everything else using ldr pc, [pc, #-4]; .word func To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/sys/arch/arm/include/asm.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/include/asm.h diff -u src/sys/arch/arm/include/asm.h:1.17 src/sys/arch/arm/include/asm.h:1.18 --- src/sys/arch/arm/include/asm.h:1.17 Mon Jan 28 23:47:38 2013 +++ src/sys/arch/arm/include/asm.h Wed Aug 7 17:09:50 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: asm.h,v 1.17 2013/01/28 23:47:38 matt Exp $ */ +/* $NetBSD: asm.h,v 1.18 2013/08/07 17:09:50 matt Exp $ */ /* * Copyright (c) 1990 The Regents of the University of California. @@ -178,4 +178,23 @@ # define RETc(c) __CONCAT(mov,c) pc, lr #endif +#ifdef _ARM_ARCH_7 +#define KMODTRAMPOLINE(n) \ +_ENTRY(__wrap_ ## n) \ + movw ip, #:lower16:n; \ + movt ip, #:upper16:n; \ + bx ip +#elif defined(_ARM_ARCH_4T) +#define KMODTRAMPOLINE(n) \ +_ENTRY(__wrap_ ## n) \ + ldr ip, [pc]; \ + bx ip; \ + .word n +#else +#define KMODTRAMPOLINE(n) \ +_ENTRY(__wrap_ ## n) \ + ldr pc, [pc, #-4]; \ + .word n +#endif + #endif /* !_ARM_ASM_H_ */