Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v2.6.22-rc2 95 lines 2.4 kB view raw
1/************************************************************************ 2 * 3 * macros.h 4 * 5 * (c) Copyright 2001-2003 Analog Devices, Inc. All rights reserved. 6 * 7 ************************************************************************/ 8 9/* Defines various assembly macros. */ 10 11#ifndef _MACROS_H 12#define _MACROS_H 13 14#define LO(con32) ((con32) & 0xFFFF) 15#define lo(con32) ((con32) & 0xFFFF) 16#define HI(con32) (((con32) >> 16) & 0xFFFF) 17#define hi(con32) (((con32) >> 16) & 0xFFFF) 18 19/* 20 * Set the corresponding bits in a System Register (SR); 21 * All bits set in "mask" will be set in the system register 22 * specified by "sys_reg" bitset_SR(sys_reg, mask), where 23 * sys_reg is the system register and mask are the bits to be set. 24 */ 25#define bitset_SR(sys_reg, mask)\ 26 [--SP] = (R7:6);\ 27 r7 = sys_reg;\ 28 r6.l = (mask) & 0xffff;\ 29 r6.h = (mask) >> 16;\ 30 r7 = r7 | r6;\ 31 sys_reg = r7;\ 32 csync;\ 33 (R7:6) = [SP++] 34 35/* 36 * Clear the corresponding bits in a System Register (SR); 37 * All bits set in "mask" will be cleared in the SR 38 * specified by "sys_reg" bitclr_SR(sys_reg, mask), where 39 * sys_reg is the SR and mask are the bits to be cleared. 40 */ 41#define bitclr_SR(sys_reg, mask)\ 42 [--SP] = (R7:6);\ 43 r7 = sys_reg;\ 44 r7 =~ r7;\ 45 r6.l = (mask) & 0xffff;\ 46 r6.h = (mask) >> 16;\ 47 r7 = r7 | r6;\ 48 r7 =~ r7;\ 49 sys_reg = r7;\ 50 csync;\ 51 (R7:6) = [SP++] 52 53/* 54 * Set the corresponding bits in a Memory Mapped Register (MMR); 55 * All bits set in "mask" will be set in the MMR specified by "mmr_reg" 56 * bitset_MMR(mmr_reg, mask), where mmr_reg is the MMR and mask are 57 * the bits to be set. 58 */ 59#define bitset_MMR(mmr_reg, mask)\ 60 [--SP] = (R7:6);\ 61 [--SP] = P5;\ 62 p5.l = mmr_reg & 0xffff;\ 63 p5.h = mmr_reg >> 16;\ 64 r7 = [p5];\ 65 r6.l = (mask) & 0xffff;\ 66 r6.h = (mask) >> 16;\ 67 r7 = r7 | r6;\ 68 [p5] = r7;\ 69 csync;\ 70 p5 = [SP++];\ 71 (R7:6) = [SP++] 72 73/* 74 * Clear the corresponding bits in a Memory Mapped Register (MMR); 75 * All bits set in "mask" will be cleared in the MMR specified by "mmr_reg" 76 * bitclr_MMRreg(mmr_reg, mask), where sys_reg is the MMR and mask are 77 * the bits to be cleared. 78 */ 79#define bitclr_MMR(mmr_reg, mask)\ 80 [--SP] = (R7:6);\ 81 [--SP] = P5;\ 82 p5.l = mmr_reg & 0xffff;\ 83 p5.h = mmr_reg >> 16;\ 84 r7 = [p5];\ 85 r7 =~ r7;\ 86 r6.l = (mask) & 0xffff;\ 87 r6.h = (mask) >> 16;\ 88 r7 = r7 | r6;\ 89 r7 =~ r7;\ 90 [p5] = r7;\ 91 csync;\ 92 p5 = [SP++];\ 93 (R7:6) = [SP++] 94 95#endif /* _MACROS_H */