ARM: 6938/1: fiq: Refactor {get,set}_fiq_regs() for Thumb-2
* To remove the risk of inconvenient register allocation decisions by the compiler, these functions are separated out as pure assembler. * The apcs frame manipulation code is not applicable for Thumb-2 (and also not easily compatible). Since it's not essential to have a full frame on these leaf assembler functions, the frame manipulation is removed, in the interests of simplicity. * Split up ldm/stm instructions to be compatible with Thumb-2, as well as avoiding instruction forms deprecated on >= ARMv7. Signed-off-by: Dave Martin <dave.martin@linaro.org> Reviewed-by: Nicolas Pitre <nicolas.pitre@linaro.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:

committed by
Russell King

parent
4db70f73e5
commit
dc2eb928a1
@@ -29,9 +29,21 @@ struct fiq_handler {
|
||||
extern int claim_fiq(struct fiq_handler *f);
|
||||
extern void release_fiq(struct fiq_handler *f);
|
||||
extern void set_fiq_handler(void *start, unsigned int length);
|
||||
extern void set_fiq_regs(struct pt_regs *regs);
|
||||
extern void get_fiq_regs(struct pt_regs *regs);
|
||||
extern void enable_fiq(int fiq);
|
||||
extern void disable_fiq(int fiq);
|
||||
|
||||
/* helpers defined in fiqasm.S: */
|
||||
extern void __set_fiq_regs(unsigned long const *regs);
|
||||
extern void __get_fiq_regs(unsigned long *regs);
|
||||
|
||||
static inline void set_fiq_regs(struct pt_regs const *regs)
|
||||
{
|
||||
__set_fiq_regs(®s->ARM_r8);
|
||||
}
|
||||
|
||||
static inline void get_fiq_regs(struct pt_regs *regs)
|
||||
{
|
||||
__get_fiq_regs(®s->ARM_r8);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user