⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcf5xxx.s

📁 FreeRTOS is a portable, open source, mini Real Time Kernel - a free to download and royalty free RTO
💻 S
字号:
/* * Lowest level routines for all ColdFire processors. Based on the * MCF523x examples from Freescale. * * Freescale explicitly grants the redistribution and modification * of these source files. The complete licensing information is * available in the file LICENSE_FREESCALE.TXT. * * Modifications Copyright (c) 2006 Christian Walter <wolti@sil.at> * * File: $Id: mcf5xxx.S,v 1.2 2006/09/24 22:50:22 wolti Exp $ */  .global asm_set_ipl  .global _asm_set_ipl  .global mcf5xxx_wr_cacr  .global _mcf5xxx_wr_cacr  .global mcf5xxx_wr_acr0  .global _mcf5xxx_wr_acr0  .global mcf5xxx_wr_acr1  .global _mcf5xxx_wr_acr1  .global mcf5xxx_wr_acr2  .global _mcf5xxx_wr_acr2  .global mcf5xxx_wr_acr3  .global _mcf5xxx_wr_acr3  .global mcf5xxx_wr_other_sp  .global _mcf5xxx_wr_other_sp  .global mcf5xxx_wr_other_a7  .global _mcf5xxx_wr_other_a7  .global mcf5xxx_wr_vbr  .global _mcf5xxx_wr_vbr  .global mcf5xxx_wr_macsr  .global _mcf5xxx_wr_macsr  .global mcf5xxx_wr_mask  .global _mcf5xxx_wr_mask  .global mcf5xxx_wr_acc0  .global _mcf5xxx_wr_acc0  .global mcf5xxx_wr_accext01  .global _mcf5xxx_wr_accext01  .global mcf5xxx_wr_accext23  .global _mcf5xxx_wr_accext23  .global mcf5xxx_wr_acc1  .global _mcf5xxx_wr_acc1  .global mcf5xxx_wr_acc2  .global _mcf5xxx_wr_acc2  .global mcf5xxx_wr_acc3  .global _mcf5xxx_wr_acc3  .global mcf5xxx_wr_sr  .global _mcf5xxx_wr_sr  .global mcf5xxx_wr_rambar0  .global _mcf5xxx_wr_rambar0  .global mcf5xxx_wr_rambar1  .global _mcf5xxx_wr_rambar1  .global mcf5xxx_wr_mbar  .global _mcf5xxx_wr_mbar  .global mcf5xxx_wr_mbar0  .global _mcf5xxx_wr_mbar0  .global mcf5xxx_wr_mbar1  .global _mcf5xxx_wr_mbar1  .text/********************************************************************//* * This routines changes the IPL to the value passed into the routine. * It also returns the old IPL value back. * Calling convention from C: *   old_ipl = asm_set_ipl(new_ipl); * For the Diab Data C compiler, it passes return value thru D0. * Note that only the least significant three bits of the passed * value are used. */asm_set_ipl:_asm_set_ipl:  link  a6,#-8  movem.l d6-d7,(sp)  move.w  sr,d7   /* current sr  */  move.l  d7,d0   /* prepare return value  */  andi.l  #0x0700,d0  /* mask out IPL  */  lsr.l #8,d0   /* IPL   */  move.l  8(a6),d6  /* get argument  */  andi.l  #0x07,d6    /* least significant three bits  */  lsl.l #8,d6   /* move over to make mask  */  andi.l  #0x0000F8FF,d7  /* zero out current IPL  */  or.l  d6,d7     /* place new IPL in sr   */  move.w  d7,sr  movem.l (sp),d6-d7  lea   8(sp),sp  unlk  a6  rts/********************************************************************//* * These routines write to the special purpose registers in the ColdFire * core.  Since these registers are write-only in the supervisor model, * no corresponding read routines exist. */mcf5xxx_wr_cacr:_mcf5xxx_wr_cacr:    move.l  4(sp),d0    .long   0x4e7b0002      /* movec d0,cacr   */    nop    rtsmcf5xxx_wr_acr0:_mcf5xxx_wr_acr0:    move.l  4(sp),d0    .long   0x4e7b0004      /* movec d0,ACR0  */    nop    rtsmcf5xxx_wr_acr1:_mcf5xxx_wr_acr1:    move.l  4(sp),d0    .long   0x4e7b0005      /* movec d0,ACR1  */    nop    rtsmcf5xxx_wr_acr2:_mcf5xxx_wr_acr2:    move.l  4(sp),d0    .long   0x4e7b0006      /* movec d0,ACR2  */    nop    rtsmcf5xxx_wr_acr3:_mcf5xxx_wr_acr3:    move.l  4(sp),d0    .long   0x4e7b0007      /* movec d0,ACR3  */    nop    rtsmcf5xxx_wr_other_sp:_mcf5xxx_wr_other_sp:mcf5xxx_wr_other_a7:_mcf5xxx_wr_other_a7:  move.l  4(sp),d0  .long 0x4e7b0800    /* movec d0,OTHER_A7 */  nop  rtsmcf5xxx_wr_vbr:_mcf5xxx_wr_vbr:  move.l  4(sp),d0  .long 0x4e7b0801    /* movec d0,VBR */  nop  rtsmcf5xxx_wr_macsr:_mcf5xxx_wr_macsr:    move.l  4(sp),d0    .long   0x4e7b0804      /* movec d0,MACSR */    nop    rtsmcf5xxx_wr_mask:_mcf5xxx_wr_mask:    move.l  4(sp),d0    .long   0x4e7b0805      /* movec d0,MASK  */    nop    rtsmcf5xxx_wr_acc0:_mcf5xxx_wr_acc0:    move.l  4(sp),d0    .long   0x4e7b0806      /* movec d0,ACC0  */    nop    rtsmcf5xxx_wr_accext01:_mcf5xxx_wr_accext01:    move.l  4(sp),d0    .long   0x4e7b0807      /* movec d0,ACCEXT01  */    nop    rtsmcf5xxx_wr_accext23:_mcf5xxx_wr_accext23:    move.l  4(sp),d0    .long   0x4e7b0808      /* movec d0,ACCEXT23  */    nop    rtsmcf5xxx_wr_acc1:_mcf5xxx_wr_acc1:    move.l  4(sp),d0    .long   0x4e7b0809      /* movec d0,ACC1  */    nop    rtsmcf5xxx_wr_acc2:_mcf5xxx_wr_acc2:    move.l  4(sp),d0    .long   0x4e7b080A      /* movec d0,ACC2  */    nop    rtsmcf5xxx_wr_acc3:_mcf5xxx_wr_acc3:    move.l  4(sp),d0    .long   0x4e7b080B      /* movec d0,ACC3  */    nop    rtsmcf5xxx_wr_sr:_mcf5xxx_wr_sr:  move.l  4(sp),d0  move.w  d0,SR  rtsmcf5xxx_wr_rambar0:_mcf5xxx_wr_rambar0:    move.l  4(sp),d0    .long   0x4e7b0C04      /* movec d0,RAMBAR0 */    nop    rtsmcf5xxx_wr_rambar1:_mcf5xxx_wr_rambar1:    move.l  4(sp),d0    .long   0x4e7b0C05      /* movec d0,RAMBAR1 */    nop    rtsmcf5xxx_wr_mbar:_mcf5xxx_wr_mbar:mcf5xxx_wr_mbar0:_mcf5xxx_wr_mbar0:    move.l  4(sp),d0    .long   0x4e7b0C0F      /* movec d0,MBAR0 */    nop    rtsmcf5xxx_wr_mbar1:_mcf5xxx_wr_mbar1:    move.l  4(sp),d0    .long   0x4e7b0C0E      /* movec d0,MBAR1 */    nop    rts  .end/********************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -