ecard.S
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:1k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  *  linux/arch/arm/lib/ecard.S
  3.  *
  4.  *  Copyright (C) 1995, 1996 Russell King
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License version 2 as
  8.  * published by the Free Software Foundation.
  9.  */
  10. #include <linux/config.h> /* for CONFIG_CPU_nn */
  11. #include <linux/linkage.h>
  12. #include <asm/assembler.h>
  13. #include <asm/hardware.h>
  14. #ifdef CONFIG_CPU_26
  15. #define CPSR2SPSR(rt)
  16. #else
  17. #define CPSR2SPSR(rt) 
  18. mrs rt, cpsr; 
  19. msr spsr, rt
  20. #endif
  21. @ Purpose: call an expansion card loader to read bytes.
  22. @ Proto  : char read_loader(int offset, char *card_base, char *loader);
  23. @ Returns: byte read
  24. ENTRY(ecard_loader_read)
  25. stmfd sp!, {r4 - r12, lr}
  26. mov r11, r1
  27. mov r1, r0
  28. CPSR2SPSR(r0)
  29. mov lr, pc
  30. mov pc, r2
  31. LOADREGS(fd, sp!, {r4 - r12, pc})
  32. @ Purpose: call an expansion card loader to reset the card
  33. @ Proto  : void read_loader(int card_base, char *loader);
  34. @ Returns: byte read
  35. ENTRY(ecard_loader_reset)
  36. stmfd sp!, {r4 - r12, lr}
  37. mov r11, r0
  38. CPSR2SPSR(r0)
  39. mov lr, pc
  40. add pc, r1, #8
  41. LOADREGS(fd, sp!, {r4 - r12, pc})