home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-mips / branch.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  794 b   |  39 lines

  1. /*
  2.  * This file is subject to the terms and conditions of the GNU General Public
  3.  * License.  See the file "COPYING" in the main directory of this archive
  4.  * for more details.
  5.  *
  6.  * Copyright (C) 1996, 1997, 1998, 2001 by Ralf Baechle
  7.  */
  8. #ifndef _ASM_BRANCH_H
  9. #define _ASM_BRANCH_H
  10.  
  11. #include <asm/ptrace.h>
  12.  
  13. static inline int delay_slot(struct pt_regs *regs)
  14. {
  15.     return regs->cp0_cause & CAUSEF_BD;
  16. }
  17.  
  18. static inline unsigned long exception_epc(struct pt_regs *regs)
  19. {
  20.     if (!delay_slot(regs))
  21.         return regs->cp0_epc;
  22.  
  23.     return regs->cp0_epc + 4;
  24. }
  25.  
  26. extern int __compute_return_epc(struct pt_regs *regs);
  27.  
  28. static inline int compute_return_epc(struct pt_regs *regs)
  29. {
  30.     if (!delay_slot(regs)) {
  31.         regs->cp0_epc += 4;
  32.         return 0;
  33.     }
  34.  
  35.     return __compute_return_epc(regs);
  36. }
  37.  
  38. #endif /* _ASM_BRANCH_H */
  39.