io-acorn.S
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  *  linux/arch/arm/lib/io-acorn.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. .text
  15. .align
  16. .equ diff_pcio_base, PCIO_BASE - IO_BASE
  17. .macro outw2 rd
  18. mov r8, rd, lsl #16
  19. orr r8, r8, r8, lsr #16
  20. str r8, [r3, r0, lsl #2]
  21. mov r8, rd, lsr #16
  22. orr r8, r8, r8, lsl #16
  23. str r8, [r3, r0, lsl #2]
  24. .endm
  25. .macro inw2 rd, mask, temp
  26. ldr rd, [r0]
  27. and rd, rd, mask
  28. ldr temp, [r0]
  29. orr rd, rd, temp, lsl #16
  30. .endm
  31. .macro addr rd
  32. tst rd, #0x80000000
  33. mov rd, rd, lsl #2
  34. add rd, rd, #IO_BASE
  35. addeq rd, rd, #diff_pcio_base
  36. .endm
  37. .iosl_warning:
  38. .ascii "<4>insl/outsl not implemented, called from %08lX"
  39. .align
  40. /*
  41.  * These make no sense on Acorn machines.
  42.  * Print a warning message.
  43.  */
  44. ENTRY(insl)
  45. ENTRY(outsl)
  46. adr r0, .iosl_warning
  47. mov r1, lr
  48. b SYMBOL_NAME(printk)
  49. @ Purpose: write a memc register
  50. @ Proto  : void memc_write(int register, int value);
  51. @ Returns: nothing
  52. #ifdef CONFIG_CPU_26
  53. ENTRY(memc_write)
  54. cmp r0, #7
  55. RETINSTR(movgt,pc,lr)
  56. mov r0, r0, lsl #17
  57. mov r1, r1, lsl #15
  58. mov r1, r1, lsr #17
  59. orr r0, r0, r1, lsl #2
  60. add r0, r0, #0x03600000
  61. strb r0, [r0]
  62. RETINSTR(mov,pc,lr)
  63. #endif