Blackfin: Split PLL code from mach-specific cdef headers
Subsystems (8)
PATCH 1/7 Blackfin: Split PLL code from mach-specific cdef headers
Split the PLL control code from the Blackfin machine-specific cdef headers so that the irqflags functions can be renamed without incurring a header loop.
---
.../mach-bf518/include/mach/cdefBF51x_base.h | 50 -------------- arch/blackfin/mach-bf518/include/mach/pll.h | 63 ++++++++++++++++++ .../mach-bf527/include/mach/cdefBF52x_base.h | 50 -------------- arch/blackfin/mach-bf527/include/mach/pll.h | 63 ++++++++++++++++++ arch/blackfin/mach-bf533/include/mach/cdefBF532.h | 44 ------------- arch/blackfin/mach-bf533/include/mach/pll.h | 57 +++++++++++++++++ arch/blackfin/mach-bf537/include/mach/cdefBF534.h | 44 ------------- arch/blackfin/mach-bf537/include/mach/pll.h | 57 +++++++++++++++++ arch/blackfin/mach-bf538/include/mach/cdefBF538.h | 50 -------------- arch/blackfin/mach-bf538/include/mach/pll.h | 63 ++++++++++++++++++ .../mach-bf548/include/mach/cdefBF54x_base.h | 56 ---------------- arch/blackfin/mach-bf548/include/mach/pll.h | 69 ++++++++++++++++++++ arch/blackfin/mach-bf561/include/mach/cdefBF561.h | 50 -------------- arch/blackfin/mach-bf561/include/mach/pll.h | 63 ++++++++++++++++++ drivers/net/bfin_mac.c | 1 15 files changed, 436 insertions(+), 344 deletions(-) create mode 100644 arch/blackfin/mach-bf518/include/mach/pll.h create mode 100644 arch/blackfin/mach-bf527/include/mach/pll.h create mode 100644 arch/blackfin/mach-bf533/include/mach/pll.h create mode 100644 arch/blackfin/mach-bf537/include/mach/pll.h create mode 100644 arch/blackfin/mach-bf538/include/mach/pll.h create mode 100644 arch/blackfin/mach-bf548/include/mach/pll.h create mode 100644 arch/blackfin/mach-bf561/include/mach/pll.h
arch/blackfin/mach-bf518/include/mach/cdefBF51x_base.h +0 -50
@@ -1058,54 +1058,4 @@/* These need to be last due to the cdef/linux inter-dependencies */ #include <asm/irq.h> -/* Writing to PLL_CTL initiates a PLL relock sequence. */ -static __inline__void bfin_write_PLL_CTL (unsigned int val) -{ -unsigned long flags, iwr0, iwr1; - -if (val ==bfin_read_PLL_CTL ()) -return ; - -local_irq_save_hw (flags); -/* Enable the PLL Wakeup bit in SIC IWR */ - iwr0 =bfin_read32 (SIC_IWR0 ); - iwr1 =bfin_read32 (SIC_IWR1 ); -/* Only allow PPL Wakeup) */ -bfin_write32 (SIC_IWR0 ,IWR_ENABLE (0 )); -bfin_write32 (SIC_IWR1 ,0 ); - -bfin_write16 (PLL_CTL , val); -SSYNC (); - asm("IDLE;" ); - -bfin_write32 (SIC_IWR0 , iwr0); -bfin_write32 (SIC_IWR1 , iwr1); -local_irq_restore_hw (flags); -} - -/* Writing to VR_CTL initiates a PLL relock sequence. */ -static __inline__void bfin_write_VR_CTL (unsigned int val) -{ -unsigned long flags, iwr0, iwr1; - -if (val ==bfin_read_VR_CTL ()) -return ; - -local_irq_save_hw (flags); -/* Enable the PLL Wakeup bit in SIC IWR */ - iwr0 =bfin_read32 (SIC_IWR0 ); - iwr1 =bfin_read32 (SIC_IWR1 ); -/* Only allow PPL Wakeup) */ -bfin_write32 (SIC_IWR0 ,IWR_ENABLE (0 )); -bfin_write32 (SIC_IWR1 ,0 ); - -bfin_write16 (VR_CTL , val); -SSYNC (); - asm("IDLE;" ); - -bfin_write32 (SIC_IWR0 , iwr0); -bfin_write32 (SIC_IWR1 , iwr1); -local_irq_restore_hw (flags); -} -#endif /* _CDEF_BF52X_H */
arch/blackfin/mach-bf518/include/mach/pll.h new file +63 -0
63 lines not on this page · raw message
arch/blackfin/mach-bf527/include/mach/cdefBF52x_base.h +0 -50
54 lines not on this page · raw message
arch/blackfin/mach-bf527/include/mach/pll.h new file +63 -0
63 lines not on this page · raw message
arch/blackfin/mach-bf533/include/mach/cdefBF532.h +0 -44
48 lines not on this page · raw message
arch/blackfin/mach-bf533/include/mach/pll.h new file +57 -0
57 lines not on this page · raw message
arch/blackfin/mach-bf537/include/mach/cdefBF534.h +0 -44
48 lines not on this page · raw message
arch/blackfin/mach-bf537/include/mach/pll.h new file +57 -0
57 lines not on this page · raw message
arch/blackfin/mach-bf538/include/mach/cdefBF538.h +0 -50
54 lines not on this page · raw message
arch/blackfin/mach-bf538/include/mach/pll.h new file +63 -0
63 lines not on this page · raw message
arch/blackfin/mach-bf548/include/mach/cdefBF54x_base.h +0 -56
61 lines not on this page · raw message
arch/blackfin/mach-bf548/include/mach/pll.h new file +69 -0
69 lines not on this page · raw message
arch/blackfin/mach-bf561/include/mach/cdefBF561.h +0 -50
54 lines not on this page · raw message
arch/blackfin/mach-bf561/include/mach/pll.h new file +63 -0
63 lines not on this page · raw message
drivers/net/bfin_mac.c +1 -0
@@ -38,6 +38,7 @@#include <asm/blackfin.h> #include <asm/cacheflush.h> #include <asm/portmux.h> +#include <mach/pll.h> #include "bfin_mac.h"
PATCH 2/7 Blackfin: Don't redefine blackfin serial port symbols
Various Blackfin machine-specific headers override Blackfin serial port symbols from the <asm/bfin_sport.h> header file with exactly the same values.
Remove the duplicates in favour of the master header.
---
arch/blackfin/include/asm/bfin_sport.h | 16 +++++ arch/blackfin/mach-bf533/include/mach/defBF532.h | 27 --------- .../mach-bf548/include/mach/defBF54x_base.h | 59 +------------------- arch/blackfin/mach-bf561/include/mach/defBF561.h | 58 -------------------- 4 files changed, 18 insertions(+), 142 deletions(-)
arch/blackfin/include/asm/bfin_sport.h +16 -0
@@ -189,6 +189,22 @@ struct sport_register {#define MCMEN 0x0010/* Multichannel Frame Mode Enable */ #define FSDR 0x0080/* Multichannel Frame Sync to Data Relationship */ #define MFD 0xF000/* Multichannel Frame Delay */ +#define MFD_0 0x0000/* Multichannel Frame Delay = 0 */ +#define MFD_1 0x1000/* Multichannel Frame Delay = 1 */ +#define MFD_2 0x2000/* Multichannel Frame Delay = 2 */ +#define MFD_3 0x3000/* Multichannel Frame Delay = 3 */ +#define MFD_4 0x4000/* Multichannel Frame Delay = 4 */ +#define MFD_5 0x5000/* Multichannel Frame Delay = 5 */ +#define MFD_6 0x6000/* Multichannel Frame Delay = 6 */ +#define MFD_7 0x7000/* Multichannel Frame Delay = 7 */ +#define MFD_8 0x8000/* Multichannel Frame Delay = 8 */ +#define MFD_9 0x9000/* Multichannel Frame Delay = 9 */ +#define MFD_10 0xA000/* Multichannel Frame Delay = 10 */ +#define MFD_11 0xB000/* Multichannel Frame Delay = 11 */ +#define MFD_12 0xC000/* Multichannel Frame Delay = 12 */ +#define MFD_13 0xD000/* Multichannel Frame Delay = 13 */ +#define MFD_14 0xE000/* Multichannel Frame Delay = 14 */ +#define MFD_15 0xF000/* Multichannel Frame Delay = 15 */ #define DP_MFD (x) BFIN_DEPOSIT(MFD, x)#define EX_MFD (x) BFIN_EXTRACT(MFD, x)
arch/blackfin/mach-bf533/include/mach/defBF532.h +0 -27
@@ -574,33 +574,6 @@/* Only use SET_WSIZE Macro With Logic OR While Setting Lower Order Bits */ #define SET_SP_WSIZE (x) (((((x)>>0x3)-1)&0xF) << 0xC)/* Multichannel Window Size = (x/8)-1 */ -/*SPORTx_MCMC2 Masks */ -#define MCCRM 0x00000003/*Multichannel Clock Recovery Mode */ -#define REC_BYPASS 0x0000/* Bypass Mode (No Clock Recovery) */ -#define REC_2FROM4 0x0002/* Recover 2 MHz Clock from 4 MHz Clock */ -#define REC_8FROM16 0x0003/* Recover 8 MHz Clock from 16 MHz Clock */ -#define MCDTXPE 0x00000004/*Multichannel DMA Transmit Packing */ -#define MCDRXPE 0x00000008/*Multichannel DMA Receive Packing */ -#define MCMEN 0x00000010/*Multichannel Frame Mode Enable */ -#define FSDR 0x00000080/*Multichannel Frame Sync to Data Relationship */ -#define MFD 0x0000F000/*Multichannel Frame Delay */ -#define MFD_0 0x0000/* Multichannel Frame Delay = 0 */ -#define MFD_1 0x1000/* Multichannel Frame Delay = 1 */ -#define MFD_2 0x2000/* Multichannel Frame Delay = 2 */ -#define MFD_3 0x3000/* Multichannel Frame Delay = 3 */ -#define MFD_4 0x4000/* Multichannel Frame Delay = 4 */ -#define MFD_5 0x5000/* Multichannel Frame Delay = 5 */ -#define MFD_6 0x6000/* Multichannel Frame Delay = 6 */ -#define MFD_7 0x7000/* Multichannel Frame Delay = 7 */ -#define MFD_8 0x8000/* Multichannel Frame Delay = 8 */ -#define MFD_9 0x9000/* Multichannel Frame Delay = 9 */ -#define MFD_10 0xA000/* Multichannel Frame Delay = 10 */ -#define MFD_11 0xB000/* Multichannel Frame Delay = 11 */ -#define MFD_12 0xC000/* Multichannel Frame Delay = 12 */ -#define MFD_13 0xD000/* Multichannel Frame Delay = 13 */ -#define MFD_14 0xE000/* Multichannel Frame Delay = 14 */ -#define MFD_15 0xF000/* Multichannel Frame Delay = 15 */ -/* ********* PARALLEL PERIPHERAL INTERFACE (PPI) MASKS **************** */ /* PPI_CONTROL Masks */
arch/blackfin/mach-bf548/include/mach/defBF54x_base.h +2 -57
70 lines not on this page · raw message
arch/blackfin/mach-bf561/include/mach/defBF561.h +0 -58
64 lines not on this page · raw message
Re: [Uclinux-dist-devel] [PATCH 2/7] Blackfin: Don't redefine blackfin serial port symbols
Quoted 4 lines · David Howells
Various Blackfin machine-specific headers override Blackfin serial port symbols from the <
asm/bfin_sport.h> header file with exactly the same values.Remove the duplicates in favour of the master header.
we've got a local patch doing pretty much the same thing, but it's waiting on driver patches being applied. so once those are all set, i can push up the Blackfin one.
-mike
Re: [Uclinux-dist-devel] [PATCH 2/7] Blackfin: Don't redefine blackfin serial port symbols
Quoted 3 lines · Mike Frysinger
we've got a local patch doing pretty much the same thing, but it's waiting on driver patches being applied. so once those are all set, i can push up the Blackfin one.
Can you give it to me to apply to my patchset in place of this one?
David
Re: [Uclinux-dist-devel] [PATCH 2/7] Blackfin: Don't redefine blackfin serial port symbols
Quoted 6 lines · David Howells
Quoted 3 lines · Mike Frysinger
we've got a local patch doing pretty much the same thing, but it's waiting on driver patches being applied. so once those are all set, i can push up the Blackfin one.
Can you give it to me to apply to my patchset in place of this one?
this guy:
http://git.kernel.org/?p=linux/kernel/git/vapier/blackfin.git;a=commitdiff;h=8e289204d2d190a8b430edf956a315ba383d85f6
-mike
Re: [Uclinux-dist-devel] [PATCH 2/7] Blackfin: Don't redefine blackfin serial port symbols
Quoted 2 lines · Mike Frysinger
Cool. Replaced my patch with that.
Any chance I can get you to test my patches? At least the ones applicable to Blackfin...
David
PATCH 3/7 Blackfin: Split the BF532 BFIN_*_FIO_FLAG() functions to their own header
In reply to David HowellsSplit the BF532 machine type BFIN_*_FIO_FLAG() functions to their own header file to avoid circular #include problems as these functions require IRQ flag handling, which requires asm/blackfin.h, which otherwise requires the header file that defines these functions.
For good measure, also get rid of the inclusion of asm/blackfin.h from mach/cdefBF532.h (which is circular) and defBF532.h (which is included by asm/blackfin.h before including this header).
---
arch/blackfin/mach-bf533/boards/blackstamp.c | 1 arch/blackfin/mach-bf533/boards/ip0x.c | 1 arch/blackfin/mach-bf533/boards/stamp.c | 1 arch/blackfin/mach-bf533/include/mach/cdefBF532.h | 47 ------------------ arch/blackfin/mach-bf533/include/mach/fio_flag.h | 55 +++++++++++++++++++++ 5 files changed, 58 insertions(+), 47 deletions(-) create mode 100644 arch/blackfin/mach-bf533/include/mach/fio_flag.h
arch/blackfin/mach-bf533/boards/blackstamp.c +1 -0
@@ -25,6 +25,7 @@#include <asm/bfin5xx_spi.h> #include <asm/portmux.h> #include <asm/dpmc.h> +#include <mach/fio_flag.h> /* * Name the Board for the /proc/cpuinfo
arch/blackfin/mach-bf533/boards/ip0x.c +1 -0
@@ -22,6 +22,7 @@#include <asm/dma.h> #include <asm/bfin5xx_spi.h> #include <asm/portmux.h> +#include <mach/fio_flag.h> /* * Name the Board for the /proc/cpuinfo
arch/blackfin/mach-bf533/boards/stamp.c +1 -0
@@ -24,6 +24,7 @@#include <asm/reboot.h> #include <asm/portmux.h> #include <asm/dpmc.h> +#include <mach/fio_flag.h> /* * Name the Board for the /proc/cpuinfo
arch/blackfin/mach-bf533/include/mach/cdefBF532.h +0 -47
57 lines not on this page · raw message
arch/blackfin/mach-bf533/include/mach/fio_flag.h new file +55 -0
55 lines not on this page · raw message
PATCH 4/7 Blackfin: Rename DES PC2() symbol to avoid collision
In reply to David HowellsRename the PC2() symbol in the generic DES crypto module to be prefixed with DES_ to avoid collision with arch code (Blackfin in this case).
---
crypto/des_generic.c | 130 +++++++++++++++++++++++++------------------------- 1 files changed, 65 insertions(+), 65 deletions(-)
crypto/des_generic.c +65 -65
@@ -614,7 +614,7 @@ static const u32 S8[64] = {#define T3 (x) pt[2 * (x) + 2]#define T4 (x) pt[2 * (x) + 3] -#define PC2 (a, b, c, d) (T4(d) | T3(c) | T2(b) | T1(a)) +#define DES_PC2 (a, b, c, d) (T4(d) | T3(c) | T2(b) | T1(a))/* * Encryption key expansion
@@ -639,22 +639,22 @@ unsigned long des_ekey(u32 *pe, const u8 *k) b = k[6 ]; b &=0x0e ; b <<=4 ; b |= k[2 ] &0x1e ; b = pc1[b]; a = k[7 ]; a &=0x0e ; a <<=4 ; a |= k[3 ] &0x1e ; a = pc1[a]; - pe[15 *2 +0 ] =PC2 (a, b, c, d); d = rs[d]; - pe[14 *2 +0 ] =PC2 (d, a, b, c); c = rs[c]; b = rs[b]; - pe[13 *2 +0 ] =PC2 (b, c, d, a); a = rs[a]; d = rs[d]; - pe[12 *2 +0 ] =PC2 (d, a, b, c); c = rs[c]; b = rs[b]; - pe[11 *2 +0 ] =PC2 (b, c, d, a); a = rs[a]; d = rs[d]; - pe[10 *2 +0 ] =PC2 (d, a, b, c); c = rs[c]; b = rs[b]; - pe[9 *2 +0 ] =PC2 (b, c, d, a); a = rs[a]; d = rs[d]; - pe[8 *2 +0 ] =PC2 (d, a, b, c); c = rs[c]; - pe[7 *2 +0 ] =PC2 (c, d, a, b); b = rs[b]; a = rs[a]; - pe[6 *2 +0 ] =PC2 (a, b, c, d); d = rs[d]; c = rs[c]; - pe[5 *2 +0 ] =PC2 (c, d, a, b); b = rs[b]; a = rs[a]; - pe[4 *2 +0 ] =PC2 (a, b, c, d); d = rs[d]; c = rs[c]; - pe[3 *2 +0 ] =PC2 (c, d, a, b); b = rs[b]; a = rs[a]; - pe[2 *2 +0 ] =PC2 (a, b, c, d); d = rs[d]; c = rs[c]; - pe[1 *2 +0 ] =PC2 (c, d, a, b); b = rs[b]; - pe[0 *2 +0 ] =PC2 (b, c, d, a); + pe[15 *2 +0 ] =DES_PC2 (a, b, c, d); d = rs[d]; + pe[14 *2 +0 ] =DES_PC2 (d, a, b, c); c = rs[c]; b = rs[b]; + pe[13 *2 +0 ] =DES_PC2 (b, c, d, a); a = rs[a]; d = rs[d]; + pe[12 *2 +0 ] =DES_PC2 (d, a, b, c); c = rs[c]; b = rs[b]; + pe[11 *2 +0 ] =DES_PC2 (b, c, d, a); a = rs[a]; d = rs[d]; + pe[10 *2 +0 ] =DES_PC2 (d, a, b, c); c = rs[c]; b = rs[b]; + pe[9 *2 +0 ] =DES_PC2 (b, c, d, a); a = rs[a]; d = rs[d]; + pe[8 *2 +0 ] =DES_PC2 (d, a, b, c); c = rs[c]; + pe[7 *2 +0 ] =DES_PC2 (c, d, a, b); b = rs[b]; a = rs[a]; + pe[6 *2 +0 ] =DES_PC2 (a, b, c, d); d = rs[d]; c = rs[c]; + pe[5 *2 +0 ] =DES_PC2 (c, d, a, b); b = rs[b]; a = rs[a]; + pe[4 *2 +0 ] =DES_PC2 (a, b, c, d); d = rs[d]; c = rs[c]; + pe[3 *2 +0 ] =DES_PC2 (c, d, a, b); b = rs[b]; a = rs[a]; + pe[2 *2 +0 ] =DES_PC2 (a, b, c, d); d = rs[d]; c = rs[c]; + pe[1 *2 +0 ] =DES_PC2 (c, d, a, b); b = rs[b]; + pe[0 *2 +0 ] =DES_PC2 (b, c, d, a);/* Check if first half is weak */ w = (a ^ c) | (b ^ d) | (rs[a] ^ c) | (b ^ rs[d]);
@@ -670,22 +670,22 @@ unsigned long des_ekey(u32 *pe, const u8 *k)/* Check if second half is weak */ w |= (a ^ c) | (b ^ d) | (rs[a] ^ c) | (b ^ rs[d]); - pe[15 *2 +1 ] =PC2 (a, b, c, d); d = rs[d]; - pe[14 *2 +1 ] =PC2 (d, a, b, c); c = rs[c]; b = rs[b]; - pe[13 *2 +1 ] =PC2 (b, c, d, a); a = rs[a]; d = rs[d]; - pe[12 *2 +1 ] =PC2 (d, a, b, c); c = rs[c]; b = rs[b]; - pe[11 *2 +1 ] =PC2 (b, c, d, a); a = rs[a]; d = rs[d]; - pe[10 *2 +1 ] =PC2 (d, a, b, c); c = rs[c]; b = rs[b]; - pe[9 *2 +1 ] =PC2 (b, c, d, a); a = rs[a]; d = rs[d]; - pe[8 *2 +1 ] =PC2 (d, a, b, c); c = rs[c]; - pe[7 *2 +1 ] =PC2 (c, d, a, b); b = rs[b]; a = rs[a]; - pe[6 *2 +1 ] =PC2 (a, b, c, d); d = rs[d]; c = rs[c]; - pe[5 *2 +1 ] =PC2 (c, d, a, b); b = rs[b]; a = rs[a]; - pe[4 *2 +1 ] =PC2 (a, b, c, d); d = rs[d]; c = rs[c]; - pe[3 *2 +1 ] =PC2 (c, d, a, b); b = rs[b]; a = rs[a]; - pe[2 *2 +1 ] =PC2 (a, b, c, d); d = rs[d]; c = rs[c]; - pe[1 *2 +1 ] =PC2 (c, d, a, b); b = rs[b]; - pe[0 *2 +1 ] =PC2 (b, c, d, a); + pe[15 *2 +1 ] =DES_PC2 (a, b, c, d); d = rs[d]; + pe[14 *2 +1 ] =DES_PC2 (d, a, b, c); c = rs[c]; b = rs[b]; + pe[13 *2 +1 ] =DES_PC2 (b, c, d, a); a = rs[a]; d = rs[d]; + pe[12 *2 +1 ] =DES_PC2 (d, a, b, c); c = rs[c]; b = rs[b]; + pe[11 *2 +1 ] =DES_PC2 (b, c, d, a); a = rs[a]; d = rs[d]; + pe[10 *2 +1 ] =DES_PC2 (d, a, b, c); c = rs[c]; b = rs[b]; + pe[9 *2 +1 ] =DES_PC2 (b, c, d, a); a = rs[a]; d = rs[d]; + pe[8 *2 +1 ] =DES_PC2 (d, a, b, c); c = rs[c]; + pe[7 *2 +1 ] =DES_PC2 (c, d, a, b); b = rs[b]; a = rs[a]; + pe[6 *2 +1 ] =DES_PC2 (a, b, c, d); d = rs[d]; c = rs[c]; + pe[5 *2 +1 ] =DES_PC2 (c, d, a, b); b = rs[b]; a = rs[a]; + pe[4 *2 +1 ] =DES_PC2 (a, b, c, d); d = rs[d]; c = rs[c]; + pe[3 *2 +1 ] =DES_PC2 (c, d, a, b); b = rs[b]; a = rs[a]; + pe[2 *2 +1 ] =DES_PC2 (a, b, c, d); d = rs[d]; c = rs[c]; + pe[1 *2 +1 ] =DES_PC2 (c, d, a, b); b = rs[b]; + pe[0 *2 +1 ] =DES_PC2 (b, c, d, a);/* Fixup: 2413 5768 -> 1357 2468 */ for (d =0 ; d <16 ; ++d) {
@@ -722,22 +722,22 @@ static void dkey(u32 *pe, const u8 *k) b = k[6 ]; b &=0x0e ; b <<=4 ; b |= k[2 ] &0x1e ; b = pc1[b]; a = k[7 ]; a &=0x0e ; a <<=4 ; a |= k[3 ] &0x1e ; a = pc1[a]; - pe[0 *2 ] =PC2 (a, b, c, d); d = rs[d]; - pe[1 *2 ] =PC2 (d, a, b, c); c = rs[c]; b = rs[b]; - pe[2 *2 ] =PC2 (b, c, d, a); a = rs[a]; d = rs[d]; - pe[3 *2 ] =PC2 (d, a, b, c); c = rs[c]; b = rs[b]; - pe[4 *2 ] =PC2 (b, c, d, a); a = rs[a]; d = rs[d]; - pe[5 *2 ] =PC2 (d, a, b, c); c = rs[c]; b = rs[b]; - pe[6 *2 ] =PC2 (b, c, d, a); a = rs[a]; d = rs[d]; - pe[7 *2 ] =PC2 (d, a, b, c); c = rs[c]; - pe[8 *2 ] =PC2 (c, d, a, b); b = rs[b]; a = rs[a]; - pe[9 *2 ] =PC2 (a, b, c, d); d = rs[d]; c = rs[c]; - pe[10 *2 ] =PC2 (c, d, a, b); b = rs[b]; a = rs[a]; - pe[11 *2 ] =PC2 (a, b, c, d); d = rs[d]; c = rs[c]; - pe[12 *2 ] =PC2 (c, d, a, b); b = rs[b]; a = rs[a]; - pe[13 *2 ] =PC2 (a, b, c, d); d = rs[d]; c = rs[c]; - pe[14 *2 ] =PC2 (c, d, a, b); b = rs[b]; - pe[15 *2 ] =PC2 (b, c, d, a); + pe[0 *2 ] =DES_PC2 (a, b, c, d); d = rs[d]; + pe[1 *2 ] =DES_PC2 (d, a, b, c); c = rs[c]; b = rs[b]; + pe[2 *2 ] =DES_PC2 (b, c, d, a); a = rs[a]; d = rs[d]; + pe[3 *2 ] =DES_PC2 (d, a, b, c); c = rs[c]; b = rs[b]; + pe[4 *2 ] =DES_PC2 (b, c, d, a); a = rs[a]; d = rs[d]; + pe[5 *2 ] =DES_PC2 (d, a, b, c); c = rs[c]; b = rs[b]; + pe[6 *2 ] =DES_PC2 (b, c, d, a); a = rs[a]; d = rs[d]; + pe[7 *2 ] =DES_PC2 (d, a, b, c); c = rs[c]; + pe[8 *2 ] =DES_PC2 (c, d, a, b); b = rs[b]; a = rs[a]; + pe[9 *2 ] =DES_PC2 (a, b, c, d); d = rs[d]; c = rs[c]; + pe[10 *2 ] =DES_PC2 (c, d, a, b); b = rs[b]; a = rs[a]; + pe[11 *2 ] =DES_PC2 (a, b, c, d); d = rs[d]; c = rs[c]; + pe[12 *2 ] =DES_PC2 (c, d, a, b); b = rs[b]; a = rs[a]; + pe[13 *2 ] =DES_PC2 (a, b, c, d); d = rs[d]; c = rs[c]; + pe[14 *2 ] =DES_PC2 (c, d, a, b); b = rs[b]; + pe[15 *2 ] =DES_PC2 (b, c, d, a);/* Skip to next table set */ pt +=512 ;
@@ -747,22 +747,22 @@ static void dkey(u32 *pe, const u8 *k) b = k[2 ]; b &=0xe0 ; b >>=4 ; b |= k[6 ] &0xf0 ; b = pc1[b +1 ]; a = k[3 ]; a &=0xe0 ; a >>=4 ; a |= k[7 ] &0xf0 ; a = pc1[a +1 ]; - pe[0 *2 +1 ] =PC2 (a, b, c, d); d = rs[d]; - pe[1 *2 +1 ] =PC2 (d, a, b, c); c = rs[c]; b = rs[b]; - pe[2 *2 +1 ] =PC2 (b, c, d, a); a = rs[a]; d = rs[d]; - pe[3 *2 +1 ] =PC2 (d, a, b, c); c = rs[c]; b = rs[b]; - pe[4 *2 +1 ] =PC2 (b, c, d, a); a = rs[a]; d = rs[d]; - pe[5 *2 +1 ] =PC2 (d, a, b, c); c = rs[c]; b = rs[b]; - pe[6 *2 +1 ] =PC2 (b, c, d, a); a = rs[a]; d = rs[d]; - pe[7 *2 +1 ] =PC2 (d, a, b, c); c = rs[c]; - pe[8 *2 +1 ] =PC2 (c, d, a, b); b = rs[b]; a = rs[a]; - pe[9 *2 +1 ] =PC2 (a, b, c, d); d = rs[d]; c = rs[c]; - pe[10 *2 +1 ] =PC2 (c, d, a, b); b = rs[b]; a = rs[a]; - pe[11 *2 +1 ] =PC2 (a, b, c, d); d = rs[d]; c = rs[c]; - pe[12 *2 +1 ] =PC2 (c, d, a, b); b = rs[b]; a = rs[a]; - pe[13 *2 +1 ] =PC2 (a, b, c, d); d = rs[d]; c = rs[c]; - pe[14 *2 +1 ] =PC2 (c, d, a, b); b = rs[b]; - pe[15 *2 +1 ] =PC2 (b, c, d, a); + pe[0 *2 +1 ] =DES_PC2 (a, b, c, d); d = rs[d]; + pe[1 *2 +1 ] =DES_PC2 (d, a, b, c); c = rs[c]; b = rs[b]; + pe[2 *2 +1 ] =DES_PC2 (b, c, d, a); a = rs[a]; d = rs[d]; + pe[3 *2 +1 ] =DES_PC2 (d, a, b, c); c = rs[c]; b = rs[b]; + pe[4 *2 +1 ] =DES_PC2 (b, c, d, a); a = rs[a]; d = rs[d]; + pe[5 *2 +1 ] =DES_PC2 (d, a, b, c); c = rs[c]; b = rs[b]; + pe[6 *2 +1 ] =DES_PC2 (b, c, d, a); a = rs[a]; d = rs[d]; + pe[7 *2 +1 ] =DES_PC2 (d, a, b, c); c = rs[c]; + pe[8 *2 +1 ] =DES_PC2 (c, d, a, b); b = rs[b]; a = rs[a]; + pe[9 *2 +1 ] =DES_PC2 (a, b, c, d); d = rs[d]; c = rs[c]; + pe[10 *2 +1 ] =DES_PC2 (c, d, a, b); b = rs[b]; a = rs[a]; + pe[11 *2 +1 ] =DES_PC2 (a, b, c, d); d = rs[d]; c = rs[c]; + pe[12 *2 +1 ] =DES_PC2 (c, d, a, b); b = rs[b]; a = rs[a]; + pe[13 *2 +1 ] =DES_PC2 (a, b, c, d); d = rs[d]; c = rs[c]; + pe[14 *2 +1 ] =DES_PC2 (c, d, a, b); b = rs[b]; + pe[15 *2 +1 ] =DES_PC2 (b, c, d, a);/* Fixup: 2413 5768 -> 1357 2468 */ for (d =0 ; d <16 ; ++d) {
Re: [Uclinux-dist-devel] [PATCH 4/7] Blackfin: Rename DES PC2() symbol to avoid collision
Quoted 2 lines · David Howells
Rename the
PC2()symbol in the generic DES crypto module to be prefixed withDES_to avoid collision with arch code (Blackfin in this case).
unfortunately this is one Blackfin define we cant easily hide away in a peripheral-specific header and avoid global namespace pollution. it represents a pin that can be used across different peripherals.
so it'd be nice if the crypto/ guys took this change :)
-mike
PATCH 5/7 Blackfin: Add missing dep to asm/irqflags.h
In reply to David HowellsAdd a missing dependency (mach/blackfin.h) to asm/irqflags.h so that bfin_read_IMASK() can be used by inline functions.
---
arch/blackfin/include/asm/irqflags.h | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-)
arch/blackfin/include/asm/irqflags.h +8 -1
@@ -8,6 +8,8 @@#ifndef __ASM_BFIN_IRQFLAGS_H__#define __ASM_BFIN_IRQFLAGS_H__ +#include <mach/blackfin.h> +#ifdef CONFIG_SMP # include <asm/pda.h> # include <asm/processor.h>
@@ -185,7 +187,12 @@ static inline void raw_local_irq_enable(void)bfin_sti (bfin_irq_flags); } -#define raw_local_save_flags (flags) do { (flags) = bfin_read_IMASK(); } while (0) +static inline unsigned long arch_local_save_flags (void ) +{ +return bfin_read_IMASK (); +} + +#define raw_local_save_flags (flags) do { (flags) = arch_local_save_flags(); } while (0)#define raw_irqs_disabled_flags (flags) (((flags) & ~0x3f) == 0)
PATCH 6/7 Blackfin: Rename IRQ flags handling functions
In reply to David HowellsRename h/w IRQ flags handling functions to be in line with what is expected for the irq renaming patch. This renames local_*_hw() to hard_local_*() using the following perl command:
perl -pi -e 's/local_irq_(restore|enable|disable)_hw/hard_local_irq_\1/ or s/local_irq_save_hw([_a-z]*)[(]flags[)]/flags = hard_local_irq_save\1()/' `find arch/blackfin/ -name "*.[ch]"`
and then fixing up asm/irqflags.h manually.
Additionally, arch/hard_local_save_flags() and arch/hard_local_irq_save() both return the flags rather than passing it through the argument list.
---
arch/blackfin/include/asm/ipipe.h | 8 - arch/blackfin/include/asm/irqflags.h | 284 +++++++++++----------- arch/blackfin/include/asm/mmu_context.h | 8 - arch/blackfin/include/asm/system.h | 4 arch/blackfin/kernel/bfin_gpio.c | 102 ++++---- arch/blackfin/kernel/cplb-mpu/cplbmgr.c | 8 - arch/blackfin/kernel/ipipe.c | 38 +-- arch/blackfin/kernel/process.c | 4 arch/blackfin/mach-bf518/include/mach/pll.h | 8 - arch/blackfin/mach-bf527/include/mach/pll.h | 8 - arch/blackfin/mach-bf533/include/mach/fio_flag.h | 8 - arch/blackfin/mach-bf533/include/mach/pll.h | 8 - arch/blackfin/mach-bf537/include/mach/pll.h | 8 - arch/blackfin/mach-bf538/include/mach/pll.h | 8 - arch/blackfin/mach-bf548/include/mach/pll.h | 8 - arch/blackfin/mach-bf561/include/mach/pll.h | 8 - arch/blackfin/mach-common/cpufreq.c | 4 arch/blackfin/mach-common/ints-priority.c | 24 +- arch/blackfin/mach-common/pm.c | 10 - 19 files changed, 284 insertions(+), 274 deletions(-)
arch/blackfin/include/asm/ipipe.h +4 -4
@@ -49,7 +49,7 @@#define prepare_arch_switch (next) \ do { \ ipipe_schedule_notify(current, next); \ - local_irq_disable_hw(); \ + hard_local_irq_disable(); \ } while (0)#define task_hijacked (p) \
@@ -57,7 +57,7 @@ do { \int __x__ = __ipipe_root_domain_p; \__clear_bit (IPIPE_SYNC_FLAG , &ipipe_root_cpudom_var (status)); \if (__x__) \ -local_irq_enable_hw (); \ +hard_local_irq_enable (); \ !__x__; \ })
@@ -167,7 +167,7 @@ static inline unsigned long __ipipe_ffnz(unsigned long ul)#define __ipipe_run_isr (ipd, irq) \ do { \ if (!__ipipe_pipeline_head_p(ipd)) \ - local_irq_enable_hw(); \ + hard_local_irq_enable(); \ if (ipd == ipipe_root_domain) { \ if (unlikely(ipipe_virtual_irq_p(irq))) { \ irq_enter(); \
@@ -183,7 +183,7 @@ static inline unsigned long __ipipe_ffnz(unsigned long ul)__ipipe_run_irqtail (); \__set_bit (IPIPE_SYNC_FLAG , &ipipe_cpudom_var (ipd, status)); \ } \ -local_irq_disable_hw (); \ +hard_local_irq_disable (); \ }while (0 ) #define __ipipe_syscall_watched_p(p, sc) \
arch/blackfin/include/asm/irqflags.h +147 -137
336 lines not on this page · raw message
arch/blackfin/include/asm/mmu_context.h +4 -4
@@ -97,8 +97,8 @@ static inline void __switch_mm(struct mm_struct *prev_mm, struct mm_struct *next }#ifdef CONFIG_IPIPE -#define lock_mm_switch (flags) local_irq_save_hw_cond(flags) -#define unlock_mm_switch (flags) local_irq_restore_hw_cond(flags) +#define lock_mm_switch (flags) flags = hard_local_irq_save_cond() +#define unlock_mm_switch (flags) hard_local_irq_restore_cond(flags)#else #define lock_mm_switch (flags) do { (void)(flags); } while (0)#define unlock_mm_switch (flags) do { (void)(flags); } while (0)
@@ -205,9 +205,9 @@ static inline void destroy_context(struct mm_struct *mm) }#define ipipe_mm_switch_protect (flags) \ - local_irq_save_hw_cond(flags) + flags = hard_local_irq_save_cond()#define ipipe_mm_switch_unprotect (flags) \ - local_irq_restore_hw_cond(flags) + hard_local_irq_restore_cond(flags)#endif
arch/blackfin/include/asm/system.h +2 -2
@@ -117,7 +117,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr,unsigned long tmp =0 ;unsigned long flags; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();switch (size) {case 1 :
@@ -139,7 +139,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, : "=&d" (tmp) : "d" (x), "m" (*__xg(ptr)) : "memory");break ; } -local_irq_restore_hw (flags); +hard_local_irq_restore (flags);return tmp; }
arch/blackfin/kernel/bfin_gpio.c +51 -51
372 lines not on this page · raw message
arch/blackfin/kernel/cplb-mpu/cplbmgr.c +4 -4
@@ -318,7 +318,7 @@ void flush_switched_cplbs(unsigned int cpu) nr_cplb_flush[cpu]++; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();_disable_icplb ();for (i = first_switched_icplb; i <MAX_CPLBS ; i++) { icplb_tbl[cpu][i].data =0 ;
@@ -332,7 +332,7 @@ void flush_switched_cplbs(unsigned int cpu)bfin_write32 (DCPLB_DATA0 + i *4 ,0 ); }_enable_dcplb (); -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }
@@ -348,7 +348,7 @@ void set_mask_dcplbs(unsigned long *masks, unsigned int cpu)return ; } -local_irq_save_hw (flags); + flags =hard_local_irq_save (); current_rwx_mask[cpu] = masks;if (L2_LENGTH && addr >=L2_START && addr <L2_START +L2_LENGTH ) {
@@ -373,5 +373,5 @@ void set_mask_dcplbs(unsigned long *masks, unsigned int cpu) addr +=PAGE_SIZE ; }_enable_dcplb (); -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }
arch/blackfin/kernel/ipipe.c +19 -19
@@ -219,10 +219,10 @@ int __ipipe_syscall_root(struct pt_regs *regs) ret =__ipipe_dispatch_event (IPIPE_EVENT_SYSCALL , regs); -local_irq_save_hw (flags); + flags =hard_local_irq_save ();if (!__ipipe_root_domain_p) { -local_irq_restore_hw (flags); +hard_local_irq_restore (flags);return 1 ; }
@@ -230,7 +230,7 @@ int __ipipe_syscall_root(struct pt_regs *regs)if ((p->irqpend_himask &IPIPE_IRQMASK_VIRT ) !=0 )__ipipe_sync_pipeline (IPIPE_IRQMASK_VIRT ); -local_irq_restore_hw (flags); +hard_local_irq_restore (flags);return -ret; }
@@ -239,14 +239,14 @@ unsigned long ipipe_critical_enter(void (*syncfn) (void)) {unsigned long flags; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();return flags; }void ipipe_critical_exit (unsigned long flags) { -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }static void __ipipe_no_irqtail (void )
@@ -279,9 +279,9 @@ int ipipe_trigger_irq(unsigned irq)return -EINVAL ;#endif -local_irq_save_hw (flags); + flags =hard_local_irq_save ();__ipipe_handle_irq (irq,NULL ); -local_irq_restore_hw (flags); +hard_local_irq_restore (flags);return 1 ; }
@@ -293,7 +293,7 @@ asmlinkage void __ipipe_sync_root(void)BUG_ON (irqs_disabled ()); -local_irq_save_hw (flags); + flags =hard_local_irq_save ();if (irq_tail_hook)irq_tail_hook ();
@@ -303,7 +303,7 @@ asmlinkage void __ipipe_sync_root(void)if (ipipe_root_cpudom_var (irqpend_himask) !=0 )__ipipe_sync_pipeline (IPIPE_IRQMASK_ANY ); -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }void ___ipipe_sync_pipeline (unsigned long syncmask)
@@ -344,10 +344,10 @@ void __ipipe_stall_root(void) {unsigned long *p, flags; -local_irq_save_hw (flags); + flags =hard_local_irq_save (); p = &__ipipe_root_status;__set_bit (IPIPE_STALL_FLAG , p); -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }EXPORT_SYMBOL (__ipipe_stall_root);
@@ -356,10 +356,10 @@ unsigned long __ipipe_test_and_stall_root(void)unsigned long *p, flags;int x; -local_irq_save_hw (flags); + flags =hard_local_irq_save (); p = &__ipipe_root_status; x =__test_and_set_bit (IPIPE_STALL_FLAG , p); -local_irq_restore_hw (flags); +hard_local_irq_restore (flags);return x; }
@@ -371,10 +371,10 @@ unsigned long __ipipe_test_root(void)unsigned long flags;int x; -local_irq_save_hw_smp (flags); + flags =hard_local_irq_save_smp (); p = &__ipipe_root_status; x =test_bit (IPIPE_STALL_FLAG , p); -local_irq_restore_hw_smp (flags); +hard_local_irq_restore_smp (flags);return x; }
@@ -384,10 +384,10 @@ void __ipipe_lock_root(void) {unsigned long *p, flags; -local_irq_save_hw (flags); + flags =hard_local_irq_save (); p = &__ipipe_root_status;__set_bit (IPIPE_SYNCDEFER_FLAG , p); -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }EXPORT_SYMBOL (__ipipe_lock_root);
@@ -395,9 +395,9 @@ void __ipipe_unlock_root(void) {unsigned long *p, flags; -local_irq_save_hw (flags); + flags =hard_local_irq_save (); p = &__ipipe_root_status;__clear_bit (IPIPE_SYNCDEFER_FLAG , p); -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }EXPORT_SYMBOL (__ipipe_unlock_root);
arch/blackfin/kernel/process.c +2 -2
@@ -65,11 +65,11 @@ static void default_idle(void)#ifdef CONFIG_IPIPE ipipe_suspend_domain ();#endif -local_irq_disable_hw (); +hard_local_irq_disable ();if (!need_resched ())idle_with_irq_disabled (); -local_irq_enable_hw (); +hard_local_irq_enable (); }/*
arch/blackfin/mach-bf518/include/mach/pll.h +4 -4
@@ -18,7 +18,7 @@ static __inline__ void bfin_write_PLL_CTL(unsigned int val)if (val ==bfin_read_PLL_CTL ())return ; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();/* Enable the PLL Wakeup bit in SIC IWR */ iwr0 =bfin_read32 (SIC_IWR0 ); iwr1 =bfin_read32 (SIC_IWR1 );
@@ -32,7 +32,7 @@ static __inline__ void bfin_write_PLL_CTL(unsigned int val)bfin_write32 (SIC_IWR0 , iwr0);bfin_write32 (SIC_IWR1 , iwr1); -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }/* Writing to VR_CTL initiates a PLL relock sequence. */
@@ -43,7 +43,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)if (val ==bfin_read_VR_CTL ())return ; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();/* Enable the PLL Wakeup bit in SIC IWR */ iwr0 =bfin_read32 (SIC_IWR0 ); iwr1 =bfin_read32 (SIC_IWR1 );
@@ -57,7 +57,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)bfin_write32 (SIC_IWR0 , iwr0);bfin_write32 (SIC_IWR1 , iwr1); - local_irq_restore_hw(flags); + hard_local_irq_restore(flags); }#endif /* _MACH_PLL_H */
arch/blackfin/mach-bf527/include/mach/pll.h +4 -4
@@ -18,7 +18,7 @@ static __inline__ void bfin_write_PLL_CTL(unsigned int val)if (val ==bfin_read_PLL_CTL ())return ; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();/* Enable the PLL Wakeup bit in SIC IWR */ iwr0 =bfin_read32 (SIC_IWR0 ); iwr1 =bfin_read32 (SIC_IWR1 );
@@ -32,7 +32,7 @@ static __inline__ void bfin_write_PLL_CTL(unsigned int val)bfin_write32 (SIC_IWR0 , iwr0);bfin_write32 (SIC_IWR1 , iwr1); -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }/* Writing to VR_CTL initiates a PLL relock sequence. */
@@ -43,7 +43,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)if (val ==bfin_read_VR_CTL ())return ; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();/* Enable the PLL Wakeup bit in SIC IWR */ iwr0 =bfin_read32 (SIC_IWR0 ); iwr1 =bfin_read32 (SIC_IWR1 );
@@ -57,7 +57,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)bfin_write32 (SIC_IWR0 , iwr0);bfin_write32 (SIC_IWR1 , iwr1); - local_irq_restore_hw(flags); + hard_local_irq_restore(flags); }#endif /* _MACH_PLL_H */
arch/blackfin/mach-bf533/include/mach/fio_flag.h +4 -4
@@ -15,10 +15,10 @@ static inline void bfin_write_FIO_FLAG_##name(unsigned short val) \ { \ unsigned long flags; \ - local_irq_save_hw(flags); \ + flags = hard_local_irq_save(); \ bfin_write16(FIO_FLAG_##name, val); \ bfin_read_CHIPID(); \ - local_irq_restore_hw(flags); \ + hard_local_irq_restore(flags); \ }BFIN_WRITE_FIO_FLAG (D)BFIN_WRITE_FIO_FLAG (C)
@@ -30,10 +30,10 @@ static inline u16 bfin_read_FIO_FLAG_##name(void) \ { \unsigned long flags; \u16 ret; \ -local_irq_save_hw (flags); \ + flags =hard_local_irq_save (); \ ret = bfin_read16(FIO_FLAG_##name); \bfin_read_CHIPID (); \ -local_irq_restore_hw (flags); \ +hard_local_irq_restore (flags); \return ret; \ }BFIN_READ_FIO_FLAG (D )
arch/blackfin/mach-bf533/include/mach/pll.h +4 -4
@@ -18,7 +18,7 @@ static __inline__ void bfin_write_PLL_CTL(unsigned int val)if (val ==bfin_read_PLL_CTL ())return ; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();/* Enable the PLL Wakeup bit in SIC IWR */ iwr =bfin_read32 (SIC_IWR );/* Only allow PPL Wakeup) */
@@ -29,7 +29,7 @@ static __inline__ void bfin_write_PLL_CTL(unsigned int val) asm("IDLE;" );bfin_write32 (SIC_IWR , iwr); -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }/* Writing to VR_CTL initiates a PLL relock sequence. */
@@ -40,7 +40,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)if (val ==bfin_read_VR_CTL ())return ; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();/* Enable the PLL Wakeup bit in SIC IWR */ iwr =bfin_read32 (SIC_IWR );/* Only allow PPL Wakeup) */
@@ -51,7 +51,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val) asm("IDLE;" );bfin_write32 (SIC_IWR , iwr); - local_irq_restore_hw(flags); + hard_local_irq_restore(flags); }#endif /* _MACH_PLL_H */
arch/blackfin/mach-bf537/include/mach/pll.h +4 -4
@@ -18,7 +18,7 @@ static __inline__ void bfin_write_PLL_CTL(unsigned int val)if (val ==bfin_read_PLL_CTL ())return ; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();/* Enable the PLL Wakeup bit in SIC IWR */ iwr =bfin_read32 (SIC_IWR );/* Only allow PPL Wakeup) */
@@ -29,7 +29,7 @@ static __inline__ void bfin_write_PLL_CTL(unsigned int val) asm("IDLE;" );bfin_write32 (SIC_IWR , iwr); -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }/* Writing to VR_CTL initiates a PLL relock sequence. */
@@ -40,7 +40,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)if (val ==bfin_read_VR_CTL ())return ; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();/* Enable the PLL Wakeup bit in SIC IWR */ iwr =bfin_read32 (SIC_IWR );/* Only allow PPL Wakeup) */
@@ -51,7 +51,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val) asm("IDLE;" );bfin_write32 (SIC_IWR , iwr); - local_irq_restore_hw(flags); + hard_local_irq_restore(flags); }#endif /* _MACH_PLL_H */
arch/blackfin/mach-bf538/include/mach/pll.h +4 -4
@@ -18,7 +18,7 @@ static __inline__ void bfin_write_PLL_CTL(unsigned int val)if (val ==bfin_read_PLL_CTL ())return ; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();/* Enable the PLL Wakeup bit in SIC IWR */ iwr0 =bfin_read32 (SIC_IWR0 ); iwr1 =bfin_read32 (SIC_IWR1 );
@@ -32,7 +32,7 @@ static __inline__ void bfin_write_PLL_CTL(unsigned int val)bfin_write32 (SIC_IWR0 , iwr0);bfin_write32 (SIC_IWR1 , iwr1); -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }/* Writing to VR_CTL initiates a PLL relock sequence. */
@@ -43,7 +43,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)if (val ==bfin_read_VR_CTL ())return ; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();/* Enable the PLL Wakeup bit in SIC IWR */ iwr0 =bfin_read32 (SIC_IWR0 ); iwr1 =bfin_read32 (SIC_IWR1 );
@@ -57,7 +57,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)bfin_write32 (SIC_IWR0 , iwr0);bfin_write32 (SIC_IWR1 , iwr1); - local_irq_restore_hw(flags); + hard_local_irq_restore(flags); }#endif /* _MACH_PLL_H */
arch/blackfin/mach-bf548/include/mach/pll.h +4 -4
@@ -18,7 +18,7 @@ static __inline__ void bfin_write_PLL_CTL(unsigned int val)if (val ==bfin_read_PLL_CTL ())return ; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();/* Enable the PLL Wakeup bit in SIC IWR */ iwr0 =bfin_read32 (SIC_IWR0 ); iwr1 =bfin_read32 (SIC_IWR1 );
@@ -35,7 +35,7 @@ static __inline__ void bfin_write_PLL_CTL(unsigned int val)bfin_write32 (SIC_IWR0 , iwr0);bfin_write32 (SIC_IWR1 , iwr1);bfin_write32 (SIC_IWR2 , iwr2); -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }/* Writing to VR_CTL initiates a PLL relock sequence. */
@@ -46,7 +46,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)if (val ==bfin_read_VR_CTL ())return ; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();/* Enable the PLL Wakeup bit in SIC IWR */ iwr0 =bfin_read32 (SIC_IWR0 ); iwr1 =bfin_read32 (SIC_IWR1 );
@@ -63,7 +63,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)bfin_write32 (SIC_IWR0 , iwr0);bfin_write32 (SIC_IWR1 , iwr1);bfin_write32 (SIC_IWR2 , iwr2); - local_irq_restore_hw(flags); + hard_local_irq_restore(flags); }#endif /* _MACH_PLL_H */
arch/blackfin/mach-bf561/include/mach/pll.h +4 -4
@@ -18,7 +18,7 @@ static __inline__ void bfin_write_PLL_CTL(unsigned int val)if (val ==bfin_read_PLL_CTL ())return ; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();/* Enable the PLL Wakeup bit in SIC IWR */ iwr0 =bfin_read32 (SICA_IWR0 ); iwr1 =bfin_read32 (SICA_IWR1 );
@@ -32,7 +32,7 @@ static __inline__ void bfin_write_PLL_CTL(unsigned int val)bfin_write32 (SICA_IWR0 , iwr0);bfin_write32 (SICA_IWR1 , iwr1); -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }/* Writing to VR_CTL initiates a PLL relock sequence. */
@@ -43,7 +43,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)if (val ==bfin_read_VR_CTL ())return ; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();/* Enable the PLL Wakeup bit in SIC IWR */ iwr0 =bfin_read32 (SICA_IWR0 ); iwr1 =bfin_read32 (SICA_IWR1 );
@@ -57,7 +57,7 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)bfin_write32 (SICA_IWR0 , iwr0);bfin_write32 (SICA_IWR1 , iwr1); - local_irq_restore_hw(flags); + hard_local_irq_restore(flags); }#endif /* _MACH_PLL_H */
arch/blackfin/mach-common/cpufreq.c +2 -2
@@ -134,7 +134,7 @@ static int bfin_target(struct cpufreq_policy *poli,cpufreq_notify_transition (&freqs,CPUFREQ_PRECHANGE );if (cpu ==CPUFREQ_CPU ) { -local_irq_save_hw (flags); + flags =hard_local_irq_save (); plldiv = (bfin_read_PLL_DIV () &SSEL ) | dpm_state_table[index].csel;bfin_write_PLL_DIV (plldiv);
@@ -155,7 +155,7 @@ static int bfin_target(struct cpufreq_policy *poli, loops_per_jiffy =cpufreq_scale (lpj_ref, lpj_ref_freq, freqs.new); } -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }/* TODO: just test case for cycles clock source, remove later */ cpufreq_notify_transition (&freqs,CPUFREQ_POSTCHANGE );
arch/blackfin/mach-common/ints-priority.c +12 -12
@@ -132,8 +132,8 @@ static void bfin_ack_noop(unsigned int irq)static void bfin_core_mask_irq (unsigned int irq) { bfin_irq_flags &= ~(1 << irq); -if (!irqs_disabled_hw ()) -local_irq_enable_hw (); +if (!hard_irqs_disabled ()) +hard_local_irq_enable (); }static void bfin_core_unmask_irq (unsigned int irq)
@@ -148,8 +148,8 @@ static void bfin_core_unmask_irq(unsigned int irq)* local_irq_enable just does "STI bfin_irq_flags", so it's exactly * what we need. */ -if (!irqs_disabled_hw ()) -local_irq_enable_hw (); +if (!hard_irqs_disabled ()) +hard_local_irq_enable ();return ; }
@@ -158,12 +158,12 @@ static void bfin_internal_mask_irq(unsigned int irq)unsigned long flags;#ifdef CONFIG_BF53x -local_irq_save_hw (flags); + flags =hard_local_irq_save ();bfin_write_SIC_IMASK (bfin_read_SIC_IMASK () & ~(1 <<SIC_SYSIRQ (irq)));#else unsigned mask_bank, mask_bit; -local_irq_save_hw (flags); + flags =hard_local_irq_save (); mask_bank =SIC_SYSIRQ (irq) /32 ; mask_bit =SIC_SYSIRQ (irq) %32 ; bfin_write_SIC_IMASK(mask_bank, bfin_read_SIC_IMASK(mask_bank) &
@@ -173,7 +173,7 @@ static void bfin_internal_mask_irq(unsigned int irq) ~(1 << mask_bit));#endif #endif -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }#ifdef CONFIG_SMP
@@ -186,12 +186,12 @@ static void bfin_internal_unmask_irq(unsigned int irq)unsigned long flags;#ifdef CONFIG_BF53x -local_irq_save_hw (flags); + flags =hard_local_irq_save ();bfin_write_SIC_IMASK (bfin_read_SIC_IMASK () | (1 <<SIC_SYSIRQ (irq)));#else unsigned mask_bank, mask_bit; -local_irq_save_hw (flags); + flags =hard_local_irq_save (); mask_bank =SIC_SYSIRQ (irq) /32 ; mask_bit =SIC_SYSIRQ (irq) %32 ;#ifdef CONFIG_SMP
@@ -207,7 +207,7 @@ static void bfin_internal_unmask_irq(unsigned int irq) (1 << mask_bit));#endif #endif -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }#ifdef CONFIG_SMP
@@ -264,7 +264,7 @@ int bfin_internal_set_wake(unsigned int irq, unsigned int state)break ; } -local_irq_save_hw (flags); + flags =hard_local_irq_save ();if (state) { bfin_sic_iwr[bank] |= (1 << bit);
@@ -275,7 +275,7 @@ int bfin_internal_set_wake(unsigned int irq, unsigned int state) vr_wakeup &= ~wakeup; } -local_irq_restore_hw (flags); +hard_local_irq_restore (flags);return 0 ; }
arch/blackfin/mach-common/pm.c +5 -5
@@ -25,7 +25,7 @@ void bfin_pm_suspend_standby_enter(void) {unsigned long flags; -local_irq_save_hw (flags); + flags =hard_local_irq_save ();bfin_pm_standby_setup ();#ifdef CONFIG_PM_BFIN_SLEEP_DEEPER
@@ -56,7 +56,7 @@ void bfin_pm_suspend_standby_enter(void)bfin_write_SIC_IWR (IWR_DISABLE_ALL );#endif -local_irq_restore_hw (flags); +hard_local_irq_restore (flags); }int bf53x_suspend_l1_mem (unsigned char *memptr)
@@ -149,12 +149,12 @@ int bfin_pm_suspend_mem_enter(void) wakeup |=GPWE ;#endif -local_irq_save_hw (flags); + flags =hard_local_irq_save (); ret =blackfin_dma_suspend ();if (ret) { -local_irq_restore_hw (flags); +hard_local_irq_restore (flags);kfree (memptr);return ret; }
@@ -178,7 +178,7 @@ int bfin_pm_suspend_mem_enter(void)bfin_gpio_pm_hibernate_restore ();blackfin_dma_resume (); -local_irq_restore_hw (flags); +hard_local_irq_restore (flags);kfree (memptr);return 0 ;
PATCH 7/7 Fix IRQ flag handling naming
In reply to David HowellsFix the IRQ flag handling naming. In linux/irqflags.h under one configuration, it maps:
local_irq_enable() -> raw_local_irq_enable() local_irq_disable() -> raw_local_irq_disable() local_irq_save() -> raw_local_irq_save() ...
and under the other configuration, it maps:
raw_local_irq_enable() -> local_irq_enable() raw_local_irq_disable() -> local_irq_disable() raw_local_irq_save() -> local_irq_save() ...
This is quite confusing. There should be one set of names expected of the arch, and this should be wrapped to give another set of names that are expected by users of this facility.
Change this to have the arch provide:
flags = arch_local_save_flags()
flags = arch_local_irq_save()
arch_local_irq_restore(flags)
arch_local_irq_disable()
arch_local_irq_enable()
arch_irqs_disabled_flags(flags)
arch_irqs_disabled()
arch_safe_halt()
Then linux/irqflags.h wraps these to provide:
raw_local_save_flags(flags) raw_local_irq_save(flags) raw_local_irq_restore(flags) raw_local_irq_disable() raw_local_irq_enable() raw_irqs_disabled_flags(flags) raw_irqs_disabled() raw_safe_halt()
with type checking on the flags 'arguments', and then wraps those to provide:
local_save_flags(flags) local_irq_save(flags) local_irq_restore(flags) local_irq_disable() local_irq_enable() irqs_disabled_flags(flags) irqs_disabled() safe_halt()
with tracing included if enabled.
The arch functions can now all be inline functions rather than some of them having to be macros.
[Note that this patch only alters X86, FRV, MN10300, ARM and Blackfin at the
moment. The other arches will need altering too as part of this patch].
---
arch/arm/include/asm/irqflags.h | 143 ++++++++++++++++++++-------------- arch/blackfin/include/asm/irqflags.h | 12 --- arch/mn10300/include/asm/system.h | 109 -------------------------- arch/mn10300/kernel/entry.S | 1 arch/x86/include/asm/irqflags.h | 32 +++----- arch/x86/include/asm/paravirt.h | 16 ++-- include/asm-generic/atomic.h | 3 - include/asm-generic/irqflags.h | 52 +++++------- include/linux/irqflags.h | 107 +++++++++++++++---------- include/linux/spinlock.h | 1 10 files changed, 195 insertions(+), 281 deletions(-)
arch/arm/include/asm/irqflags.h +83 -60
@@ -10,66 +10,85 @@*/ #if __LINUX_ARM_ARCH__ >=6 -#define raw_local_irq_save (x) \ - ({ \ - __asm__ __volatile__( \ - "mrs %0, cpsr @ local_irq_save\n" \ - "cpsid i" \ - : "=r" (x) : : "memory", "cc"); \ - }) +static inline unsigned long arch_local_irq_save (void ) +{ +unsigned long flags; + + asmvolatile ( +" mrs %0, cpsr @ arch_local_irq_save\n" +" cpsid i" + :"=r" (flags) : :"memory" ,"cc" ); +return flags; +} + +static inline void arch_local_irq_enable (void ) +{ + asmvolatile ( +" cpsie i @ arch_local_irq_enable" + : + : + :"memory" ,"cc" ); +} + +static inline void arch_local_irq_disable (void ) +{ + asmvolatile ( +" cpsid i @ arch_local_irq_disable" + : + : + :"memory" ,"cc" ); +} -#define raw_local_irq_enable () __asm__("cpsie i @ __sti" : : : "memory", "cc") -#define raw_local_irq_disable () __asm__("cpsid i @ __cli" : : : "memory", "cc")#define local_fiq_enable () __asm__("cpsie f @ __stf" : : : "memory", "cc")#define local_fiq_disable () __asm__("cpsid f @ __clf" : : : "memory", "cc") -#else /* * Save the current interrupt enable state & disable IRQs */ -#define raw_local_irq_save (x) \ - ({ \ - unsigned long temp; \ - (void) (&temp == &x); \ - __asm__ __volatile__( \ - "mrs %0, cpsr @ local_irq_save\n" \ -" orr %1, %0, #128\n" \ -" msr cpsr_c, %1" \ - : "=r" (x), "=r" (temp) \ - : \ - : "memory", "cc"); \ - }) +static inline unsigned long arch_local_irq_save (void ) +{ +unsigned long flags, temp; + + asmvolatile ( +" mrs %0, cpsr @ arch_local_irq_save\n" +" orr %1, %0, #128\n" +" msr cpsr_c, %1" + :"=r" (flags),"=r" (temp) + : + :"memory" ,"cc" ); +return flags; +}/* * Enable IRQs */ -#define raw_local_irq_enable () \ - ({ \ - unsigned long temp; \ - __asm__ __volatile__( \ - "mrs %0, cpsr @ local_irq_enable\n" \ -" bic %0, %0, #128\n" \ -" msr cpsr_c, %0" \ - : "=r" (temp) \ - : \ - : "memory", "cc"); \ - }) +static inline void arch_local_irq_enable (void ) +{ +unsigned long temp; + asmvolatile ( +" mrs %0, cpsr @ arch_local_irq_enable\n" +" bic %0, %0, #128\n" +" msr cpsr_c, %0" + :"=r" (temp) + : + :"memory" ,"cc" ); +}/* * Disable IRQs */ -#define raw_local_irq_disable () \ - ({ \ - unsigned long temp; \ - __asm__ __volatile__( \ - "mrs %0, cpsr @ local_irq_disable\n" \ -" orr %0, %0, #128\n" \ -" msr cpsr_c, %0" \ - : "=r" (temp) \ - : \ - : "memory", "cc"); \ - }) +static inline void arch_local_irq_disable (void ) +{ +unsigned long temp; + asmvolatile ( +" mrs %0, cpsr @ arch_local_irq_disable\n" +" orr %0, %0, #128\n" +" msr cpsr_c, %0" + :"=r" (temp) + : + :"memory" ,"cc" ); +}/* * Enable FIQs
@@ -106,27 +125,31 @@/* * Save the current interrupt enable state. */ -#define raw_local_save_flags (x) \ - ({ \ - __asm__ __volatile__( \ - "mrs %0, cpsr @ local_save_flags" \ - : "=r" (x) : : "memory", "cc"); \ - }) +static inline unsigned long arch_local_save_flags (void ) +{ +unsigned long flags; + asmvolatile ( +" mrs %0, cpsr @ local_save_flags" + :"=r" (flags) : :"memory" ,"cc" ); +return flags; +}/* * restore saved IRQ & FIQ state */ -#define raw_local_irq_restore (x) \ - __asm__ __volatile__( \ - "msr cpsr_c, %0 @ local_irq_restore\n" \ - : \ - : "r" (x) \ - : "memory", "cc") +static inline void arch_local_irq_restore (unsigned long flags) +{ + asmvolatile ( +" msr cpsr_c, %0 @ local_irq_restore" + : + :"r" (flags) + :"memory" ,"cc" ); +} -#define raw_irqs_disabled_flags (flags) \ -({ \ - (int)((flags) & PSR_I_BIT); \ -}) +static inline int arch_irqs_disabled_flags (unsigned long flags) +{ +return flags &PSR_I_BIT ; +}#endif #endif
arch/blackfin/include/asm/irqflags.h +0 -12
@@ -218,16 +218,4 @@ static inline void hard_local_irq_restore(unsigned long flags)#endif /* !CONFIG_IPIPE */ - -/* -* Raw interface to linux/irqflags.h. -*/ -#define raw_local_save_flags (flags) do { (flags) = arch_local_save_flags(); } while (0) -#define raw_local_irq_save (flags) do { (flags) = arch_local_irq_save(); } while (0) -#define raw_local_irq_restore (flags) arch_local_irq_restore(flags) -#define raw_local_irq_enable () arch_local_irq_enable() -#define raw_local_irq_disable () arch_local_irq_disable() -#define raw_irqs_disabled_flags (flags) arch_irqs_disabled_flags(flags) -#define raw_irqs_disabled () arch_irqs_disabled() -#endif
arch/mn10300/include/asm/system.h +1 -108
121 lines not on this page · raw message
arch/mn10300/kernel/entry.S +1 -0
@@ -16,6 +16,7 @@ #include <linux/linkage.h> #include <asm/smp.h> #include <asm/system.h> +#include <asm/irqflags.h> #include <asm/thread_info.h> #include <asm/intctl-regs.h> #include <asm/busctl-regs.h>
arch/x86/include/asm/irqflags.h +12 -20
@@ -61,22 +61,22 @@ static inline void native_halt(void)#else #ifndef __ASSEMBLY__ -static inline unsigned long __raw_local_save_flags (void ) +static inline unsigned long arch_local_save_flags (void ) {return native_save_fl (); } -static inline void raw_local_irq_restore (unsigned long flags) +static inline void arch_local_irq_restore (unsigned long flags) {native_restore_fl (flags); } -static inline void raw_local_irq_disable (void ) +static inline void arch_local_irq_disable (void ) {native_irq_disable (); } -static inline void raw_local_irq_enable (void ) +static inline void arch_local_irq_enable (void ) {native_irq_enable (); }
@@ -85,7 +85,7 @@ static inline void raw_local_irq_enable(void)* Used in the idle loop; sti takes one instruction cycle * to complete: */ -static inline void raw_safe_halt (void ) +static inline void arch_safe_halt (void ) {native_safe_halt (); }
@@ -102,12 +102,10 @@ static inline void halt(void)/* * For spinlocks, etc: */ -static inline unsigned long __raw_local_irq_save (void ) +static inline unsigned long arch_local_irq_save (void ) { -unsigned long flags =__raw_local_save_flags (); - -raw_local_irq_disable (); - +unsigned long flags =arch_local_save_flags (); +arch_local_irq_disable ();return flags; }#else
@@ -153,22 +151,16 @@ static inline unsigned long __raw_local_irq_save(void)#endif /* CONFIG_PARAVIRT */ #ifndef __ASSEMBLY__ -#define raw_local_save_flags (flags) \ - do { (flags) = __raw_local_save_flags(); } while (0) - -#define raw_local_irq_save (flags) \ - do { (flags) = __raw_local_irq_save(); } while (0) - -static inline int raw_irqs_disabled_flags (unsigned long flags) +static inline int arch_irqs_disabled_flags (unsigned long flags) {return !(flags &X86_EFLAGS_IF ); } -static inline int raw_irqs_disabled (void ) +static inline int arch_irqs_disabled (void ) { -unsigned long flags =__raw_local_save_flags (); +unsigned long flags =arch_local_save_flags (); -return raw_irqs_disabled_flags (flags); +return arch_irqs_disabled_flags (flags); }#else
arch/x86/include/asm/paravirt.h +8 -8
@@ -105,7 +105,7 @@ static inline void write_cr8(unsigned long x) }#endif -static inline void raw_safe_halt (void ) +static inline void arch_safe_halt (void ) {PVOP_VCALL0 (pv_irq_ops.safe_halt); }
@@ -829,32 +829,32 @@ static __always_inline void arch_spin_unlock(struct arch_spinlock *lock)#define __PV_IS_CALLEE_SAVE (func) \ ((struct paravirt_callee_save) { func }) -static inline unsigned long __raw_local_save_flags (void ) +static inline unsigned long arch_local_save_flags (void ) { return PVOP_CALLEE0(unsigned long, pv_irq_ops.save_fl); } -static inline void raw_local_irq_restore (unsigned long f) +static inline void arch_local_irq_restore (unsigned long f) {PVOP_VCALLEE1 (pv_irq_ops.restore_fl, f); } -static inline void raw_local_irq_disable (void ) +static inline void arch_local_irq_disable (void ) {PVOP_VCALLEE0 (pv_irq_ops.irq_disable); } -static inline void raw_local_irq_enable (void ) +static inline void arch_local_irq_enable (void ) {PVOP_VCALLEE0 (pv_irq_ops.irq_enable); } -static inline unsigned long __raw_local_irq_save (void ) +static inline unsigned long arch_local_irq_save (void ) {unsigned long f; - f =__raw_local_save_flags (); -raw_local_irq_disable (); + f =arch_local_save_flags (); +arch_local_irq_disable ();return f; }
include/asm-generic/atomic.h +2 -1
@@ -43,6 +43,7 @@*/ #define atomic_set (v, i) (((v)->counter) = (i)) +#include <asm/irqflags.h> #include <asm/system.h> /**
@@ -57,7 +58,7 @@ static inline int atomic_add_return(int i, atomic_t *v)unsigned long flags;int temp; -raw_local_irq_save (flags);/* Don't trace it in a irqsoff handler */ +raw_local_irq_save (flags);/* Don't trace it in an irqsoff handler */ temp = v->counter; temp += i; v->counter = temp;
include/asm-generic/irqflags.h +23 -29
91 lines not on this page · raw message
include/linux/irqflags.h +64 -43
145 lines not on this page · raw message
include/linux/spinlock.h +1 -0
@@ -50,6 +50,7 @@#include <linux/preempt.h> #include <linux/linkage.h> #include <linux/compiler.h> +#include <linux/irqflags.h> #include <linux/thread_info.h> #include <linux/kernel.h> #include <linux/stringify.h>
Re: [PATCH 7/7] Fix IRQ flag handling naming
Quoted 52 lines · David Howells
Fix the IRQ flag handling naming. In
linux/irqflags.hunder one configuration, it maps:local_irq_enable() -> raw_local_irq_enable() local_irq_disable() -> raw_local_irq_disable() local_irq_save() -> raw_local_irq_save() ...and under the other configuration, it maps:
raw_local_irq_enable() -> local_irq_enable() raw_local_irq_disable() -> local_irq_disable() raw_local_irq_save() -> local_irq_save() ...This is quite confusing. There should be one set of names expected of the arch, and this should be wrapped to give another set of names that are expected by users of this facility.
Change this to have the arch provide:
flags =
arch_local_save_flags()
flags =arch_local_irq_save()
arch_local_irq_restore(flags)
arch_local_irq_disable()
arch_local_irq_enable()
arch_irqs_disabled_flags(flags)
arch_irqs_disabled()
arch_safe_halt()Then
linux/irqflags.hwraps these to provide:raw_local_save_flags(flags) raw_local_irq_save(flags) raw_local_irq_restore(flags) raw_local_irq_disable() raw_local_irq_enable() raw_irqs_disabled_flags(flags) raw_irqs_disabled() raw_safe_halt()with type checking on the flags 'arguments', and then wraps those to provide:
local_save_flags(flags) local_irq_save(flags) local_irq_restore(flags) local_irq_disable() local_irq_enable() irqs_disabled_flags(flags) irqs_disabled() safe_halt()
Quoted 4 lines
with tracing included if enabled.
The arch functions can now all be inline functions rather than some of them having to be macros.
Nice one.
Quoted 5 lines
[Note that this patch only alters X86, FRV, MN10300, ARM and Blackfin at the
moment. The other arches will need altering too as part of this patch].Signed-off-by David Howells <[email protected]>Tested-by Catalin Marinas <[email protected]>
cover Name the irq flag handling functions sanely
In reply to David Howells[Note that this patch only alters X86, FRV, MN10300, ARM and Blackfin at the
moment. The other arches will need altering too as part of this patch].
The final patch of the series makes the naming of the general irq flag functions sane.
Currently, under one configuration, linux/irqflags.h maps:
local_irq_enable() -> raw_local_irq_enable() local_irq_disable() -> raw_local_irq_disable() local_irq_save() -> raw_local_irq_save() ...
and under the other configuration, it maps:
raw_local_irq_enable() -> local_irq_enable() raw_local_irq_disable() -> local_irq_disable() raw_local_irq_save() -> local_irq_save() ...
This is quite confusing. There should be one set of names expected of the arch, and this should be wrapped to give another set of names that are expected by users of this facility.
The final patch change the asm/irqflags.h headers to provide:
flags = arch_local_save_flags()
flags = arch_local_irq_save()
arch_local_irq_restore(flags)
arch_local_irq_disable()
arch_local_irq_enable()
arch_irqs_disabled_flags(flags)
arch_irqs_disabled()
arch_safe_halt()
Then linux/irqflags.h wraps these to provide:
raw_local_save_flags(flags) raw_local_irq_save(flags) raw_local_irq_restore(flags) raw_local_irq_disable() raw_local_irq_enable() raw_irqs_disabled_flags(flags) raw_irqs_disabled() raw_safe_halt()
with type checking on the flags 'arguments', and then wraps those to provide:
local_save_flags(flags) local_irq_save(flags) local_irq_restore(flags) local_irq_disable() local_irq_enable() irqs_disabled_flags(flags) irqs_disabled() safe_halt()
with tracing included if enabled.
The arch functions can now all be inline functions rather than some of them having to be macros.
===========
ARCH FIXUPS
===========
To make this work, some of the arches need fixing up to some extent or other:
(1) Blackfin.
A number of circular dependencies and other problems needed sorting out in the Blackfin arch. The first few patches deal with this. With this, most of the Blackfin defconfigs compile, and none of the breakage is obviously to do with the irqflags patches.
This also requires a name collision between the DES crypto module and the Blackfin arch code to be fixed.
David