* Making allyesconfig work
@ 2012-01-20 11:51 Russell King - ARM Linux
2012-01-20 12:08 ` Catalin Marinas
0 siblings, 1 reply; 6+ messages in thread
From: Russell King - ARM Linux @ 2012-01-20 11:51 UTC (permalink / raw)
To: linux-arm-kernel
Presently, allyesconfig fails to get anywhere near building on ARM, which
is caused mainly by a Kconfig problem.
The problem is XIP_KERNEL gets enabled, which turns off ARM_PATCH_PHYS_VIRT,
and then we have Kconfig wanting a value for PHYS_OFFSET. Because 'y'
doesn't suit this, Kconfig leaves this blank.
The result is that make allyesconfig produces an invalid configuration
file, which fails on building - killing off the build before we've even
compiled any of the kernel .c files.
One solution to this would be:
config __ALLYESCONFIG
bool "If you enable me, your personal universe will implode"
help
Never enable this option. This option is here to detect
'make allyesconfig' and allow certain options to be disabled.
Saying 'y' here yourself will result in those options being
hidden from you, which is probably not what you want.
and then we can have:
config XIP_KERNEL
bool "Kernel Execute-In-Place from ROM"
depends on !ZBOOT_ROM && !ARM_LPAE && !__ALLYESCONFIG
Once this is done, then we can actually get to a point where we can
start building the kernel. The good news is that most of the kernel
builds relatively cleanly, although there are the expected warnings
about virt_to_bus(), bus_to_virt().
However, it seems we're exporting a few constants which don't have a
good namespace - one of those is fixed by a patches I posted earlier
today to avoid exporting the CR_* constants to the entire kernel
build. CR_* is not a good namespace to be visible to drivers and the
like, so these definitions have been moved to a private ARM header.
There's also the troublesome T() macro, which conflicts with a bunch
of other drivers. (I've added Catalin to the To: line for this
reason.)
I won't post the entire build log - it comes in around 430K which is
much too large for these lists. Instead, below are the errors and
warnings from the build.
Below are the errors from a fresh allyesconfig build:
drivers/input/touchscreen/eeti_ts.c:65: error: implicit declaration of function 'irq_to_gpio'
drivers/mfd/ezx-pcap.c:205: error: implicit declaration of function 'irq_to_gpio'
drivers/net/ethernet/faraday/ftgmac100.c:983: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ftgmac100_interrupt'
drivers/net/ethernet/faraday/ftgmac100.c:1085: error: implicit declaration of function 'request_irq'
drivers/net/ethernet/faraday/ftgmac100.c:1085: error: 'ftgmac100_interrupt' undeclared (first use in this function)
drivers/net/ethernet/faraday/ftgmac100.c:1085: error: (Each undeclared identifier is reported only once
drivers/net/ethernet/faraday/ftgmac100.c:1085: error: for each function it appears in.)
drivers/net/ethernet/faraday/ftgmac100.c:1113: error: implicit declaration of function 'free_irq'
drivers/net/ethernet/faraday/ftmac100.c:859: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ftmac100_interrupt'
drivers/net/ethernet/faraday/ftmac100.c:964: error: implicit declaration of function 'request_irq'
drivers/net/ethernet/faraday/ftmac100.c:964: error: 'ftmac100_interrupt' undeclared (first use in this function)
drivers/net/ethernet/faraday/ftmac100.c:964: error: (Each undeclared identifier is reported only once
drivers/net/ethernet/faraday/ftmac100.c:964: error: for each function it appears in.)
drivers/net/ethernet/faraday/ftmac100.c:987: error: implicit declaration of function 'free_irq'
drivers/net/ethernet/stmicro/stmmac/mmc_core.c:142: error: implicit declaration of function 'pr_debug'
drivers/scsi/advansys.c:8376: error: implicit declaration of function 'dma_cache_sync'
drivers/staging/iio/accel/lis3l02dq_core.c:702: error: implicit declaration of function 'irq_to_gpio'
drivers/staging/iio/accel/lis3l02dq_ring.c:295: error: implicit declaration of function 'irq_to_gpio'
which shows mostly its irq_to_gpio, and three drivers with missing
include files.
The warnings are (with virt_to_bus/bus_to_virt omitted):
arch/arm/kernel/return_address.c:62:2: warning: #warning "TODO: return_address should use unwind tables"
arch/arm/kernel/return_address.c:62:2: warning: #warning "TODO: return_address should use unwind tables"
kernel/debug/kdb/kdb_support.c:639: warning: passing argument 1 of 'is_idle_task' discards qualifiers from pointer target type
kernel/sched/fair.c:419: warning: 'account_cfs_rq_runtime' declared inline after being called
kernel/sched/fair.c:419: warning: previous declaration of 'account_cfs_rq_runtime' was here
kernel/sched/fair.c:1178: warning: 'return_cfs_rq_runtime' declared inline after being called
kernel/sched/fair.c:1178: warning: previous declaration of 'return_cfs_rq_runtime' was here
kernel/trace/trace.c:3697: warning: 'page2' may be used uninitialized in this function
mm/memcontrol.c:381: warning: 'mem_cgroup_is_root' declared inline after being called
mm/memcontrol.c:381: warning: previous declaration of 'mem_cgroup_is_root' was here
fs/btrfs/backref.c:419: warning: 'ret' may be used uninitialized in this function
fs/nfs/callback_proc.c:116: warning: 'ino' may be used uninitialized in this function
fs/nfs/callback_proc.c:115: warning: 'lo' may be used uninitialized in this function
include/asm-generic/xor.h:696: warning: 'xor_block_8regs_p' defined but not usedinclude/asm-generic/xor.h:704: warning: 'xor_block_32regs_p' defined but not used
drivers/dma/pl330.c:859: warning: comparison of distinct pointer types lacks a cast
drivers/gpu/drm/drm_edid.c:1341: warning: array subscript is above array bounds
drivers/gpu/drm/drm_edid.c:1341: warning: array subscript is above array bounds
drivers/gpu/drm/drm_edid.c:1341: warning: array subscript is above array bounds
drivers/gpu/drm/drm_edid.c:1341: warning: array subscript is above array bounds
drivers/gpu/drm/drm_edid.c:1341: warning: array subscript is above array bounds
drivers/gpu/drm/nouveau/nv50_display.c:618: warning: 'mc' may be used uninitialized in this function
drivers/infiniband/hw/mlx4/qp.c:1366: warning: 'vlan' may be used uninitialized in this function
drivers/input/joystick/analog.c:175:2: warning: #warning Precise timer not defined for this architecture.
drivers/isdn/hardware/mISDN/hfcpci.c:2319: warning: ignoring return value of 'driver_for_each_device', declared with attribute warn_unused_result
drivers/isdn/hardware/mISDN/w6692.c:1189: warning: unsupported argument to '__builtin_return_address'
drivers/isdn/hardware/mISDN/mISDNipac.c:755: warning: unsupported argument to '__builtin_return_address'
drivers/leds/leds-lp5521.c:648: warning: 'ret' may be used uninitialized in this function
drivers/leds/leds-lp5521.c:649: warning: 'buf' may be used uninitialized in this function
drivers/leds/leds-lp5521.c:197: warning: 'mode' may be used uninitialized in this function
drivers/leds/leds-lp5523.c:443: warning: 'vdd' may be used uninitialized in this function
drivers/leds/leds-lp5523.c:443: warning: 'adc' may be used uninitialized in this function
drivers/leds/leds-lp5523.c:196: warning: 'status' may be used uninitialized in this function
drivers/media/dvb/pt1/pt1.c:395: warning: 'addr' may be used uninitialized in this function
drivers/media/dvb/pt1/pt1.c:397: warning: 'buf_pfn' may be used uninitialized in this function
drivers/media/rc/redrat3.c:1100: warning: assignment from incompatible pointer type
drivers/media/video/em28xx/em28xx-core.c:1116: warning: 'packet_size' may be used uninitialized in this function
drivers/mmc/card/block.c:794: warning: 'arg' may be used uninitialized in this function
drivers/mmc/card/block.c:794: warning: 'nr' may be used uninitialized in this function
drivers/mmc/card/block.c:794: warning: 'from' may be used uninitialized in this function
drivers/mtd/devices/doc2000.c:874: warning: value computed is not used
drivers/mtd/devices/doc2000.c:1043: warning: value computed is not used
drivers/mtd/devices/doc2000.c:1068: warning: value computed is not used
drivers/mtd/devices/doc2000.c:1143: warning: value computed is not used
drivers/mtd/devices/doc2001plus.c:634: warning: value computed is not used
drivers/mtd/devices/doc2001plus.c:635: warning: value computed is not used
drivers/mtd/devices/doc2001plus.c:891: warning: value computed is not used
drivers/mtd/devices/doc2001plus.c:892: warning: value computed is not used
drivers/mtd/devices/docg3.c:753: warning: 'doc_get_erase_count' defined but not used
drivers/mtd/devices/docprobe.c:74:2: warning: #warning Unknown architecture for DiskOnChip. No default probe locations defined
drivers/mtd/devices/docprobe.c:138: warning: value computed is not used
drivers/mtd/devices/docprobe.c:139: warning: value computed is not used
drivers/mtd/devices/docprobe.c:158: warning: value computed is not used
drivers/mtd/devices/slram.c:52:1: warning: "T" redefined
arch/arm/include/asm/domain.h:86:1: warning: this is the location of the previous definition
drivers/mtd/devices/sst25l.c:381: warning: unused variable 'i'
drivers/mtd/nand/diskonchip.c:57:2: warning: #warning Unknown architecture for DiskOnChip. No default probe locations defined
drivers/mtd/nand/diskonchip.c:318: warning: value computed is not used
drivers/mtd/nand/diskonchip.c:494: warning: value computed is not used
drivers/mtd/nand/diskonchip.c:520: warning: value computed is not used
drivers/mtd/nand/diskonchip.c:537: warning: value computed is not used
drivers/mtd/nand/diskonchip.c:541: warning: value computed is not used
drivers/mtd/nand/diskonchip.c:556: warning: value computed is not used
drivers/mtd/nand/diskonchip.c:557: warning: value computed is not used
drivers/mtd/nand/diskonchip.c:593: warning: value computed is not used
drivers/mtd/nand/diskonchip.c:594: warning: value computed is not used
drivers/mtd/nand/diskonchip.c:624: warning: value computed is not used
drivers/mtd/nand/diskonchip.c:625: warning: value computed is not used
drivers/mtd/nand/diskonchip.c:629: warning: value computed is not used
drivers/mtd/nand/diskonchip.c:630: warning: value computed is not used
drivers/mtd/nand/diskonchip.c:1454: warning: value computed is not used
drivers/mtd/nand/diskonchip.c:1455: warning: value computed is not used
drivers/mtd/nand/diskonchip.c:1456: warning: value computed is not used
drivers/mtd/nand/diskonchip.c:1547: warning: value computed is not used
drivers/net/ethernet/amd/nmclan_cs.c:626: warning: 'pcmcia_request_exclusive_irq' is deprecated (declared at include/pcmcia/ds.h:203)
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c:2784: warning: comparison of distinct pointer types lacks a cast
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c:1530: warning: comparison of distinct pointer types lacks a cast
drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c:1614:1: warning: "T" redefined
arch/arm/include/asm/domain.h:86:1: warning: this is the location of the previous definition
drivers/net/ethernet/dec/tulip/winbond-840.c:914:2: warning: #warning Processor architecture undefined
drivers/net/ethernet/marvell/sky2.c:1762: warning: 'imask' may be used uninitialized in this function
drivers/net/ethernet/neterion/vxge/vxge-main.c:2117: warning: 'adaptive_coalesce_tx_interrupts' defined but not used
drivers/net/ethernet/neterion/vxge/vxge-main.c:2145: warning: 'adaptive_coalesce_rx_interrupts' defined but not used
drivers/net/ethernet/via/via-velocity.c:3062: warning: array subscript is above array bounds
drivers/net/ethernet/via/via-velocity.c:3064: warning: array subscript is above array bounds
drivers/net/ethernet/via/via-velocity.c:3074: warning: array subscript is above array bounds
drivers/net/tokenring/ibmtr_cs.c:195: warning: 'pcmcia_request_exclusive_irq' is deprecated (declared at include/pcmcia/ds.h:203)
drivers/net/wireless/ath/ath6kl/sdio.c:330: warning: 'sg_sz' may be used uninitialized in this function
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c:346: warning: 'wsec' may be used uninitialized in this function
drivers/net/wireless/brcm80211/brcmsmac/aiutils.c:1159: warning: 'val' may be used uninitialized in this function
drivers/net/wireless/rt2x00/rt2800lib.c:1291: warning: 'gf40_mode' may be used uninitialized in this function
drivers/net/wireless/rt2x00/rt2800lib.c:1291: warning: 'gf20_mode' may be used uninitialized in this function
drivers/net/wireless/rt2x00/rt2800lib.c:1291: warning: 'mm40_mode' may be used uninitialized in this function
drivers/net/wireless/rt2x00/rt2800lib.c:1291: warning: 'mm20_mode' may be used uninitialized in this function
drivers/net/wireless/rtlwifi/rtl8192de/trx.c:124: warning: 'rx_pwr_all' may be used uninitialized in this function
drivers/rtc/rtc-m41t80.c:217: warning: 'm41t80_rtc_alarm_irq_enable' defined but not used
drivers/rtc/rtc-m41t80.c:239: warning: 'm41t80_rtc_set_alarm' defined but not used
drivers/rtc/rtc-m41t80.c:309: warning: 'm41t80_rtc_read_alarm' defined but not used
drivers/scsi/aic94xx/aic94xx_sds.c:985: warning: 'offs' may be used uninitialized in this function
drivers/scsi/lpfc/lpfc_scsi.c:1307: warning: integer constant is too large for 'long' type
drivers/scsi/lpfc/lpfc_scsi.c:1333: warning: integer constant is too large for 'long' type
drivers/scsi/lpfc/lpfc_scsi.c:1344: warning: integer constant is too large for 'long' type
drivers/scsi/lpfc/lpfc_scsi.c:1367: warning: integer constant is too large for 'long' type
drivers/scsi/lpfc/lpfc_scsi.c:1378: warning: integer constant is too large for 'long' type
drivers/scsi/lpfc/lpfc_scsi.c:1412: warning: integer constant is too large for 'long' type
drivers/scsi/lpfc/lpfc_scsi.c:1434: warning: integer constant is too large for 'long' type
drivers/scsi/lpfc/lpfc_debugfs.c:3892: warning: integer constant is too large for 'long' type
drivers/scsi/advansys.c:72:2: warning: #warning this driver is still not properly converted to the DMA API
drivers/scsi/dpt_i2o.c:183: warning: 'dptids' defined but not used
drivers/scsi/ips.c:210:2: warning: #warning "This driver has only been tested on the x86/ia64/x86_64 platforms"
drivers/scsi/fdomain.c:1775: warning: 'fdomain_pci_tbl' defined but not used
drivers/scsi/initio.c:131: warning: 'i91u_pci_devices' defined but not used
drivers/staging/iio/gyro/adis16080_core.c:85: warning: 'ut' may be used uninitialized in this function
drivers/staging/iio/light/isl29018.c:297: warning: 'new_adc_bit' may be used uninitialized in this function
drivers/staging/iio/light/isl29018.c:255: warning: 'new_range' may be used uninitialized in this function
drivers/staging/media/dt3155v4l/dt3155v4l.c:307: warning: initialization from incompatible pointer type
drivers/staging/media/dt3155v4l/dt3155v4l.c:311: warning: initialization from incompatible pointer type
include/linux/jhash.h:90: warning: array subscript is above array bounds
include/linux/jhash.h:91: warning: array subscript is above array bounds
include/linux/jhash.h:92: warning: array subscript is above array bounds
include/linux/jhash.h:93: warning: array subscript is above array bounds
include/linux/jhash.h:94: warning: array subscript is above array bounds
include/linux/jhash.h:95: warning: array subscript is above array bounds
include/linux/jhash.h:96: warning: array subscript is above array bounds
include/linux/jhash.h:97: warning: array subscript is above array bounds
drivers/staging/rtl8712/rtl8712_recv.c:752: warning: 'rx_pwr_all' may be used uninitialized in this function
drivers/staging/usbip/usbip_common.c:796: warning: 'ret' may be used uninitialized in this function
drivers/staging/wlan-ng/cfg80211.c:404: warning: ignoring return value of 'cfg80211_inform_bss', declared with attribute warn_unused_result
drivers/tty/serial/ifx6x60.c:609: warning: 'more' may be used uninitialized in this function
drivers/usb/host/xhci-ring.c:1253: warning: 'hcd' may be used uninitialized in this function
drivers/usb/musb/musb_gadget.c:1087: warning: 'double_buffer_not_ok' is deprecated (declared at drivers/usb/musb/musb_core.h:450)
drivers/usb/musb/musb_gadget.c:1127: warning: 'double_buffer_not_ok' is deprecated (declared at drivers/usb/musb/musb_core.h:450)
drivers/usb/musb/musb_host.c:599: warning: 'double_buffer_not_ok' is deprecated (declared at drivers/usb/musb/musb_core.h:450)
drivers/usb/musb/musb_host.c:774: warning: 'double_buffer_not_ok' is deprecated (declared at drivers/usb/musb/musb_core.h:450)
drivers/usb/otg/ab8500-usb.c:156: warning: 'event' may be used uninitialized in this function
drivers/video/aty/atyfb_base.c:169: warning: array subscript is above array bounds
drivers/video/aty/atyfb_base.c:154: warning: array subscript is above array bounds
drivers/video/aty/radeon_pm.c:1719: warning: 'radeon_reinitialize_M10' defined but not used
sound/soc/codecs/wm_hubs.c:120: warning: 'reg_r' may be used uninitialized in this function
sound/soc/codecs/wm_hubs.c:120: warning: 'reg_l' may be used uninitialized in this function
sound/soc/codecs/wm8994.c:58: warning: unused variable 'wm8994'
sound/soc/codecs/wm8996.c:1661: warning: 'bclk_reg' may be used uninitialized in this function
net/bluetooth/rfcomm/tty.c:218: warning: 'p' may be used uninitialized in this function
net/ceph/ceph_fs.c:33: warning: 'mode' may be used uninitialized in this function
include/net/netfilter/xt_log.h:50: warning: value computed is not used
include/net/netfilter/xt_log.h:50: warning: value computed is not used
The biggest one in there that I think we need to be concerned about is
the T() thing, which really needs to change to something more suitable
or move to a private header file which isn't exposed to the entire
kernel build.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Making allyesconfig work
2012-01-20 11:51 Making allyesconfig work Russell King - ARM Linux
@ 2012-01-20 12:08 ` Catalin Marinas
2012-01-20 12:24 ` Russell King - ARM Linux
0 siblings, 1 reply; 6+ messages in thread
From: Catalin Marinas @ 2012-01-20 12:08 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, Jan 20, 2012 at 11:51:08AM +0000, Russell King - ARM Linux wrote:
> There's also the troublesome T() macro, which conflicts with a bunch
> of other drivers. (I've added Catalin to the To: line for this
> reason.)
This macro is used in asm/uaccess.h and asm/futex.h, so I think it would
be difficult to hide it completely. But I'm happy to rename it to
something else (IIRC, T stands for "Translated").
--
Catalin
^ permalink raw reply [flat|nested] 6+ messages in thread
* Making allyesconfig work
2012-01-20 12:08 ` Catalin Marinas
@ 2012-01-20 12:24 ` Russell King - ARM Linux
2012-01-20 14:53 ` Catalin Marinas
0 siblings, 1 reply; 6+ messages in thread
From: Russell King - ARM Linux @ 2012-01-20 12:24 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, Jan 20, 2012 at 12:08:56PM +0000, Catalin Marinas wrote:
> On Fri, Jan 20, 2012 at 11:51:08AM +0000, Russell King - ARM Linux wrote:
> > There's also the troublesome T() macro, which conflicts with a bunch
> > of other drivers. (I've added Catalin to the To: line for this
> > reason.)
>
> This macro is used in asm/uaccess.h and asm/futex.h, so I think it would
> be difficult to hide it completely. But I'm happy to rename it to
> something else (IIRC, T stands for "Translated").
We should do something, because T() is just too risky for causing these
kinds of conflicts. We're not going to be able to get the driver code
changed for this. People will rightfully object - and it was something
originally spotted by Al Viro in November... allegedly rude works were
muttered (not publically) over it!
^ permalink raw reply [flat|nested] 6+ messages in thread
* Making allyesconfig work
2012-01-20 12:24 ` Russell King - ARM Linux
@ 2012-01-20 14:53 ` Catalin Marinas
2012-01-20 22:43 ` Nicolas Pitre
0 siblings, 1 reply; 6+ messages in thread
From: Catalin Marinas @ 2012-01-20 14:53 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, Jan 20, 2012 at 12:24:02PM +0000, Russell King - ARM Linux wrote:
> On Fri, Jan 20, 2012 at 12:08:56PM +0000, Catalin Marinas wrote:
> > On Fri, Jan 20, 2012 at 11:51:08AM +0000, Russell King - ARM Linux wrote:
> > > There's also the troublesome T() macro, which conflicts with a bunch
> > > of other drivers. (I've added Catalin to the To: line for this
> > > reason.)
> >
> > This macro is used in asm/uaccess.h and asm/futex.h, so I think it would
> > be difficult to hide it completely. But I'm happy to rename it to
> > something else (IIRC, T stands for "Translated").
>
> We should do something, because T() is just too risky for causing these
> kinds of conflicts.
Here's a patch. For lack of inspiration, I called it TUSER (and grep'ed
the kernel, there isn't other reference to such name).
ARM: Rename the T() macro to TUSER() to avoid namespace conflicts
From: Catalin Marinas <catalin.marinas@arm.com>
This macro is used to generate unprivileged accesses (LDRT/STRT) to user
space.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
---
arch/arm/include/asm/assembler.h | 4 +-
arch/arm/include/asm/domain.h | 8 ++--
arch/arm/include/asm/futex.h | 8 ++--
arch/arm/include/asm/uaccess.h | 16 ++++---
arch/arm/lib/getuser.S | 12 +++---
arch/arm/lib/putuser.S | 28 ++++++-------
arch/arm/lib/uaccess.S | 82 +++++++++++++++++++-------------------
7 files changed, 79 insertions(+), 79 deletions(-)
diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h
index b6e65de..62f8095 100644
--- a/arch/arm/include/asm/assembler.h
+++ b/arch/arm/include/asm/assembler.h
@@ -237,7 +237,7 @@
*/
#ifdef CONFIG_THUMB2_KERNEL
- .macro usraccoff, instr, reg, ptr, inc, off, cond, abort, t=T()
+ .macro usraccoff, instr, reg, ptr, inc, off, cond, abort, t=TUSER()
9999:
.if \inc == 1
\instr\cond\()b\()\t\().w \reg, [\ptr, #\off]
@@ -277,7 +277,7 @@
#else /* !CONFIG_THUMB2_KERNEL */
- .macro usracc, instr, reg, ptr, inc, cond, rept, abort, t=T()
+ .macro usracc, instr, reg, ptr, inc, cond, rept, abort, t=TUSER()
.rept \rept
9999:
.if \inc == 1
diff --git a/arch/arm/include/asm/domain.h b/arch/arm/include/asm/domain.h
index af18cea..b5dc173 100644
--- a/arch/arm/include/asm/domain.h
+++ b/arch/arm/include/asm/domain.h
@@ -83,9 +83,9 @@
* instructions (inline assembly)
*/
#ifdef CONFIG_CPU_USE_DOMAINS
-#define T(instr) #instr "t"
+#define TUSER(instr) #instr "t"
#else
-#define T(instr) #instr
+#define TUSER(instr) #instr
#endif
#else /* __ASSEMBLY__ */
@@ -95,9 +95,9 @@
* instructions
*/
#ifdef CONFIG_CPU_USE_DOMAINS
-#define T(instr) instr ## t
+#define TUSER(instr) instr ## t
#else
-#define T(instr) instr
+#define TUSER(instr) instr
#endif
#endif /* __ASSEMBLY__ */
diff --git a/arch/arm/include/asm/futex.h b/arch/arm/include/asm/futex.h
index 253cc86..7be5469 100644
--- a/arch/arm/include/asm/futex.h
+++ b/arch/arm/include/asm/futex.h
@@ -75,9 +75,9 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
#define __futex_atomic_op(insn, ret, oldval, tmp, uaddr, oparg) \
__asm__ __volatile__( \
- "1: " T(ldr) " %1, [%3]\n" \
+ "1: " TUSER(ldr) " %1, [%3]\n" \
" " insn "\n" \
- "2: " T(str) " %0, [%3]\n" \
+ "2: " TUSER(str) " %0, [%3]\n" \
" mov %0, #0\n" \
__futex_atomic_ex_table("%5") \
: "=&r" (ret), "=&r" (oldval), "=&r" (tmp) \
@@ -95,10 +95,10 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
return -EFAULT;
__asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n"
- "1: " T(ldr) " %1, [%4]\n"
+ "1: " TUSER(ldr) " %1, [%4]\n"
" teq %1, %2\n"
" it eq @ explicit IT needed for the 2b label\n"
- "2: " T(streq) " %3, [%4]\n"
+ "2: " TUSER(streq) " %3, [%4]\n"
__futex_atomic_ex_table("%5")
: "+r" (ret), "=&r" (val)
: "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT)
diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
index b293616..2958976 100644
--- a/arch/arm/include/asm/uaccess.h
+++ b/arch/arm/include/asm/uaccess.h
@@ -227,7 +227,7 @@ do { \
#define __get_user_asm_byte(x,addr,err) \
__asm__ __volatile__( \
- "1: " T(ldrb) " %1,[%2],#0\n" \
+ "1: " TUSER(ldrb) " %1,[%2],#0\n" \
"2:\n" \
" .pushsection .fixup,\"ax\"\n" \
" .align 2\n" \
@@ -263,7 +263,7 @@ do { \
#define __get_user_asm_word(x,addr,err) \
__asm__ __volatile__( \
- "1: " T(ldr) " %1,[%2],#0\n" \
+ "1: " TUSER(ldr) " %1,[%2],#0\n" \
"2:\n" \
" .pushsection .fixup,\"ax\"\n" \
" .align 2\n" \
@@ -308,7 +308,7 @@ do { \
#define __put_user_asm_byte(x,__pu_addr,err) \
__asm__ __volatile__( \
- "1: " T(strb) " %1,[%2],#0\n" \
+ "1: " TUSER(strb) " %1,[%2],#0\n" \
"2:\n" \
" .pushsection .fixup,\"ax\"\n" \
" .align 2\n" \
@@ -341,7 +341,7 @@ do { \
#define __put_user_asm_word(x,__pu_addr,err) \
__asm__ __volatile__( \
- "1: " T(str) " %1,[%2],#0\n" \
+ "1: " TUSER(str) " %1,[%2],#0\n" \
"2:\n" \
" .pushsection .fixup,\"ax\"\n" \
" .align 2\n" \
@@ -366,10 +366,10 @@ do { \
#define __put_user_asm_dword(x,__pu_addr,err) \
__asm__ __volatile__( \
- ARM( "1: " T(str) " " __reg_oper1 ", [%1], #4\n" ) \
- ARM( "2: " T(str) " " __reg_oper0 ", [%1]\n" ) \
- THUMB( "1: " T(str) " " __reg_oper1 ", [%1]\n" ) \
- THUMB( "2: " T(str) " " __reg_oper0 ", [%1, #4]\n" ) \
+ ARM( "1: " TUSER(str) " " __reg_oper1 ", [%1], #4\n" ) \
+ ARM( "2: " TUSER(str) " " __reg_oper0 ", [%1]\n" ) \
+ THUMB( "1: " TUSER(str) " " __reg_oper1 ", [%1]\n" ) \
+ THUMB( "2: " TUSER(str) " " __reg_oper0 ", [%1, #4]\n" ) \
"3:\n" \
" .pushsection .fixup,\"ax\"\n" \
" .align 2\n" \
diff --git a/arch/arm/lib/getuser.S b/arch/arm/lib/getuser.S
index 1b049cd..11093a7 100644
--- a/arch/arm/lib/getuser.S
+++ b/arch/arm/lib/getuser.S
@@ -31,18 +31,18 @@
#include <asm/domain.h>
ENTRY(__get_user_1)
-1: T(ldrb) r2, [r0]
+1: TUSER(ldrb) r2, [r0]
mov r0, #0
mov pc, lr
ENDPROC(__get_user_1)
ENTRY(__get_user_2)
#ifdef CONFIG_THUMB2_KERNEL
-2: T(ldrb) r2, [r0]
-3: T(ldrb) r3, [r0, #1]
+2: TUSER(ldrb) r2, [r0]
+3: TUSER(ldrb) r3, [r0, #1]
#else
-2: T(ldrb) r2, [r0], #1
-3: T(ldrb) r3, [r0]
+2: TUSER(ldrb) r2, [r0], #1
+3: TUSER(ldrb) r3, [r0]
#endif
#ifndef __ARMEB__
orr r2, r2, r3, lsl #8
@@ -54,7 +54,7 @@ ENTRY(__get_user_2)
ENDPROC(__get_user_2)
ENTRY(__get_user_4)
-4: T(ldr) r2, [r0]
+4: TUSER(ldr) r2, [r0]
mov r0, #0
mov pc, lr
ENDPROC(__get_user_4)
diff --git a/arch/arm/lib/putuser.S b/arch/arm/lib/putuser.S
index c023fc1..7db2599 100644
--- a/arch/arm/lib/putuser.S
+++ b/arch/arm/lib/putuser.S
@@ -31,7 +31,7 @@
#include <asm/domain.h>
ENTRY(__put_user_1)
-1: T(strb) r2, [r0]
+1: TUSER(strb) r2, [r0]
mov r0, #0
mov pc, lr
ENDPROC(__put_user_1)
@@ -40,19 +40,19 @@ ENTRY(__put_user_2)
mov ip, r2, lsr #8
#ifdef CONFIG_THUMB2_KERNEL
#ifndef __ARMEB__
-2: T(strb) r2, [r0]
-3: T(strb) ip, [r0, #1]
+2: TUSER(strb) r2, [r0]
+3: TUSER(strb) ip, [r0, #1]
#else
-2: T(strb) ip, [r0]
-3: T(strb) r2, [r0, #1]
+2: TUSER(strb) ip, [r0]
+3: TUSER(strb) r2, [r0, #1]
#endif
#else /* !CONFIG_THUMB2_KERNEL */
#ifndef __ARMEB__
-2: T(strb) r2, [r0], #1
-3: T(strb) ip, [r0]
+2: TUSER(strb) r2, [r0], #1
+3: TUSER(strb) ip, [r0]
#else
-2: T(strb) ip, [r0], #1
-3: T(strb) r2, [r0]
+2: TUSER(strb) ip, [r0], #1
+3: TUSER(strb) r2, [r0]
#endif
#endif /* CONFIG_THUMB2_KERNEL */
mov r0, #0
@@ -60,18 +60,18 @@ ENTRY(__put_user_2)
ENDPROC(__put_user_2)
ENTRY(__put_user_4)
-4: T(str) r2, [r0]
+4: TUSER(str) r2, [r0]
mov r0, #0
mov pc, lr
ENDPROC(__put_user_4)
ENTRY(__put_user_8)
#ifdef CONFIG_THUMB2_KERNEL
-5: T(str) r2, [r0]
-6: T(str) r3, [r0, #4]
+5: TUSER(str) r2, [r0]
+6: TUSER(str) r3, [r0, #4]
#else
-5: T(str) r2, [r0], #4
-6: T(str) r3, [r0]
+5: TUSER(str) r2, [r0], #4
+6: TUSER(str) r3, [r0]
#endif
mov r0, #0
mov pc, lr
diff --git a/arch/arm/lib/uaccess.S b/arch/arm/lib/uaccess.S
index d0ece2a..5c908b1 100644
--- a/arch/arm/lib/uaccess.S
+++ b/arch/arm/lib/uaccess.S
@@ -32,11 +32,11 @@
rsb ip, ip, #4
cmp ip, #2
ldrb r3, [r1], #1
-USER( T(strb) r3, [r0], #1) @ May fault
+USER( TUSER( strb) r3, [r0], #1) @ May fault
ldrgeb r3, [r1], #1
-USER( T(strgeb) r3, [r0], #1) @ May fault
+USER( TUSER( strgeb) r3, [r0], #1) @ May fault
ldrgtb r3, [r1], #1
-USER( T(strgtb) r3, [r0], #1) @ May fault
+USER( TUSER( strgtb) r3, [r0], #1) @ May fault
sub r2, r2, ip
b .Lc2u_dest_aligned
@@ -59,7 +59,7 @@ ENTRY(__copy_to_user)
addmi ip, r2, #4
bmi .Lc2u_0nowords
ldr r3, [r1], #4
-USER( T(str) r3, [r0], #4) @ May fault
+USER( TUSER( str) r3, [r0], #4) @ May fault
mov ip, r0, lsl #32 - PAGE_SHIFT @ On each page, use a ld/st??t instruction
rsb ip, ip, #0
movs ip, ip, lsr #32 - PAGE_SHIFT
@@ -88,18 +88,18 @@ USER( T(str) r3, [r0], #4) @ May fault
stmneia r0!, {r3 - r4} @ Shouldnt fault
tst ip, #4
ldrne r3, [r1], #4
- T(strne) r3, [r0], #4 @ Shouldnt fault
+ TUSER( strne) r3, [r0], #4 @ Shouldnt fault
ands ip, ip, #3
beq .Lc2u_0fupi
.Lc2u_0nowords: teq ip, #0
beq .Lc2u_finished
.Lc2u_nowords: cmp ip, #2
ldrb r3, [r1], #1
-USER( T(strb) r3, [r0], #1) @ May fault
+USER( TUSER( strb) r3, [r0], #1) @ May fault
ldrgeb r3, [r1], #1
-USER( T(strgeb) r3, [r0], #1) @ May fault
+USER( TUSER( strgeb) r3, [r0], #1) @ May fault
ldrgtb r3, [r1], #1
-USER( T(strgtb) r3, [r0], #1) @ May fault
+USER( TUSER( strgtb) r3, [r0], #1) @ May fault
b .Lc2u_finished
.Lc2u_not_enough:
@@ -120,7 +120,7 @@ USER( T(strgtb) r3, [r0], #1) @ May fault
mov r3, r7, pull #8
ldr r7, [r1], #4
orr r3, r3, r7, push #24
-USER( T(str) r3, [r0], #4) @ May fault
+USER( TUSER( str) r3, [r0], #4) @ May fault
mov ip, r0, lsl #32 - PAGE_SHIFT
rsb ip, ip, #0
movs ip, ip, lsr #32 - PAGE_SHIFT
@@ -155,18 +155,18 @@ USER( T(str) r3, [r0], #4) @ May fault
movne r3, r7, pull #8
ldrne r7, [r1], #4
orrne r3, r3, r7, push #24
- T(strne) r3, [r0], #4 @ Shouldnt fault
+ TUSER( strne) r3, [r0], #4 @ Shouldnt fault
ands ip, ip, #3
beq .Lc2u_1fupi
.Lc2u_1nowords: mov r3, r7, get_byte_1
teq ip, #0
beq .Lc2u_finished
cmp ip, #2
-USER( T(strb) r3, [r0], #1) @ May fault
+USER( TUSER( strb) r3, [r0], #1) @ May fault
movge r3, r7, get_byte_2
-USER( T(strgeb) r3, [r0], #1) @ May fault
+USER( TUSER( strgeb) r3, [r0], #1) @ May fault
movgt r3, r7, get_byte_3
-USER( T(strgtb) r3, [r0], #1) @ May fault
+USER( TUSER( strgtb) r3, [r0], #1) @ May fault
b .Lc2u_finished
.Lc2u_2fupi: subs r2, r2, #4
@@ -175,7 +175,7 @@ USER( T(strgtb) r3, [r0], #1) @ May fault
mov r3, r7, pull #16
ldr r7, [r1], #4
orr r3, r3, r7, push #16
-USER( T(str) r3, [r0], #4) @ May fault
+USER( TUSER( str) r3, [r0], #4) @ May fault
mov ip, r0, lsl #32 - PAGE_SHIFT
rsb ip, ip, #0
movs ip, ip, lsr #32 - PAGE_SHIFT
@@ -210,18 +210,18 @@ USER( T(str) r3, [r0], #4) @ May fault
movne r3, r7, pull #16
ldrne r7, [r1], #4
orrne r3, r3, r7, push #16
- T(strne) r3, [r0], #4 @ Shouldnt fault
+ TUSER( strne) r3, [r0], #4 @ Shouldnt fault
ands ip, ip, #3
beq .Lc2u_2fupi
.Lc2u_2nowords: mov r3, r7, get_byte_2
teq ip, #0
beq .Lc2u_finished
cmp ip, #2
-USER( T(strb) r3, [r0], #1) @ May fault
+USER( TUSER( strb) r3, [r0], #1) @ May fault
movge r3, r7, get_byte_3
-USER( T(strgeb) r3, [r0], #1) @ May fault
+USER( TUSER( strgeb) r3, [r0], #1) @ May fault
ldrgtb r3, [r1], #0
-USER( T(strgtb) r3, [r0], #1) @ May fault
+USER( TUSER( strgtb) r3, [r0], #1) @ May fault
b .Lc2u_finished
.Lc2u_3fupi: subs r2, r2, #4
@@ -230,7 +230,7 @@ USER( T(strgtb) r3, [r0], #1) @ May fault
mov r3, r7, pull #24
ldr r7, [r1], #4
orr r3, r3, r7, push #8
-USER( T(str) r3, [r0], #4) @ May fault
+USER( TUSER( str) r3, [r0], #4) @ May fault
mov ip, r0, lsl #32 - PAGE_SHIFT
rsb ip, ip, #0
movs ip, ip, lsr #32 - PAGE_SHIFT
@@ -265,18 +265,18 @@ USER( T(str) r3, [r0], #4) @ May fault
movne r3, r7, pull #24
ldrne r7, [r1], #4
orrne r3, r3, r7, push #8
- T(strne) r3, [r0], #4 @ Shouldnt fault
+ TUSER( strne) r3, [r0], #4 @ Shouldnt fault
ands ip, ip, #3
beq .Lc2u_3fupi
.Lc2u_3nowords: mov r3, r7, get_byte_3
teq ip, #0
beq .Lc2u_finished
cmp ip, #2
-USER( T(strb) r3, [r0], #1) @ May fault
+USER( TUSER( strb) r3, [r0], #1) @ May fault
ldrgeb r3, [r1], #1
-USER( T(strgeb) r3, [r0], #1) @ May fault
+USER( TUSER( strgeb) r3, [r0], #1) @ May fault
ldrgtb r3, [r1], #0
-USER( T(strgtb) r3, [r0], #1) @ May fault
+USER( TUSER( strgtb) r3, [r0], #1) @ May fault
b .Lc2u_finished
ENDPROC(__copy_to_user)
@@ -295,11 +295,11 @@ ENDPROC(__copy_to_user)
.Lcfu_dest_not_aligned:
rsb ip, ip, #4
cmp ip, #2
-USER( T(ldrb) r3, [r1], #1) @ May fault
+USER( TUSER( ldrb) r3, [r1], #1) @ May fault
strb r3, [r0], #1
-USER( T(ldrgeb) r3, [r1], #1) @ May fault
+USER( TUSER( ldrgeb) r3, [r1], #1) @ May fault
strgeb r3, [r0], #1
-USER( T(ldrgtb) r3, [r1], #1) @ May fault
+USER( TUSER( ldrgtb) r3, [r1], #1) @ May fault
strgtb r3, [r0], #1
sub r2, r2, ip
b .Lcfu_dest_aligned
@@ -322,7 +322,7 @@ ENTRY(__copy_from_user)
.Lcfu_0fupi: subs r2, r2, #4
addmi ip, r2, #4
bmi .Lcfu_0nowords
-USER( T(ldr) r3, [r1], #4)
+USER( TUSER( ldr) r3, [r1], #4)
str r3, [r0], #4
mov ip, r1, lsl #32 - PAGE_SHIFT @ On each page, use a ld/st??t instruction
rsb ip, ip, #0
@@ -351,18 +351,18 @@ USER( T(ldr) r3, [r1], #4)
ldmneia r1!, {r3 - r4} @ Shouldnt fault
stmneia r0!, {r3 - r4}
tst ip, #4
- T(ldrne) r3, [r1], #4 @ Shouldnt fault
+ TUSER( ldrne) r3, [r1], #4 @ Shouldnt fault
strne r3, [r0], #4
ands ip, ip, #3
beq .Lcfu_0fupi
.Lcfu_0nowords: teq ip, #0
beq .Lcfu_finished
.Lcfu_nowords: cmp ip, #2
-USER( T(ldrb) r3, [r1], #1) @ May fault
+USER( TUSER( ldrb) r3, [r1], #1) @ May fault
strb r3, [r0], #1
-USER( T(ldrgeb) r3, [r1], #1) @ May fault
+USER( TUSER( ldrgeb) r3, [r1], #1) @ May fault
strgeb r3, [r0], #1
-USER( T(ldrgtb) r3, [r1], #1) @ May fault
+USER( TUSER( ldrgtb) r3, [r1], #1) @ May fault
strgtb r3, [r0], #1
b .Lcfu_finished
@@ -375,7 +375,7 @@ USER( T(ldrgtb) r3, [r1], #1) @ May fault
.Lcfu_src_not_aligned:
bic r1, r1, #3
-USER( T(ldr) r7, [r1], #4) @ May fault
+USER( TUSER( ldr) r7, [r1], #4) @ May fault
cmp ip, #2
bgt .Lcfu_3fupi
beq .Lcfu_2fupi
@@ -383,7 +383,7 @@ USER( T(ldr) r7, [r1], #4) @ May fault
addmi ip, r2, #4
bmi .Lcfu_1nowords
mov r3, r7, pull #8
-USER( T(ldr) r7, [r1], #4) @ May fault
+USER( TUSER( ldr) r7, [r1], #4) @ May fault
orr r3, r3, r7, push #24
str r3, [r0], #4
mov ip, r1, lsl #32 - PAGE_SHIFT
@@ -418,7 +418,7 @@ USER( T(ldr) r7, [r1], #4) @ May fault
stmneia r0!, {r3 - r4}
tst ip, #4
movne r3, r7, pull #8
-USER( T(ldrne) r7, [r1], #4) @ May fault
+USER( TUSER( ldrne) r7, [r1], #4) @ May fault
orrne r3, r3, r7, push #24
strne r3, [r0], #4
ands ip, ip, #3
@@ -438,7 +438,7 @@ USER( T(ldrne) r7, [r1], #4) @ May fault
addmi ip, r2, #4
bmi .Lcfu_2nowords
mov r3, r7, pull #16
-USER( T(ldr) r7, [r1], #4) @ May fault
+USER( TUSER( ldr) r7, [r1], #4) @ May fault
orr r3, r3, r7, push #16
str r3, [r0], #4
mov ip, r1, lsl #32 - PAGE_SHIFT
@@ -474,7 +474,7 @@ USER( T(ldr) r7, [r1], #4) @ May fault
stmneia r0!, {r3 - r4}
tst ip, #4
movne r3, r7, pull #16
-USER( T(ldrne) r7, [r1], #4) @ May fault
+USER( TUSER( ldrne) r7, [r1], #4) @ May fault
orrne r3, r3, r7, push #16
strne r3, [r0], #4
ands ip, ip, #3
@@ -486,7 +486,7 @@ USER( T(ldrne) r7, [r1], #4) @ May fault
strb r3, [r0], #1
movge r3, r7, get_byte_3
strgeb r3, [r0], #1
-USER( T(ldrgtb) r3, [r1], #0) @ May fault
+USER( TUSER( ldrgtb) r3, [r1], #0) @ May fault
strgtb r3, [r0], #1
b .Lcfu_finished
@@ -494,7 +494,7 @@ USER( T(ldrgtb) r3, [r1], #0) @ May fault
addmi ip, r2, #4
bmi .Lcfu_3nowords
mov r3, r7, pull #24
-USER( T(ldr) r7, [r1], #4) @ May fault
+USER( TUSER( ldr) r7, [r1], #4) @ May fault
orr r3, r3, r7, push #8
str r3, [r0], #4
mov ip, r1, lsl #32 - PAGE_SHIFT
@@ -529,7 +529,7 @@ USER( T(ldr) r7, [r1], #4) @ May fault
stmneia r0!, {r3 - r4}
tst ip, #4
movne r3, r7, pull #24
-USER( T(ldrne) r7, [r1], #4) @ May fault
+USER( TUSER( ldrne) r7, [r1], #4) @ May fault
orrne r3, r3, r7, push #8
strne r3, [r0], #4
ands ip, ip, #3
@@ -539,9 +539,9 @@ USER( T(ldrne) r7, [r1], #4) @ May fault
beq .Lcfu_finished
cmp ip, #2
strb r3, [r0], #1
-USER( T(ldrgeb) r3, [r1], #1) @ May fault
+USER( TUSER( ldrgeb) r3, [r1], #1) @ May fault
strgeb r3, [r0], #1
-USER( T(ldrgtb) r3, [r1], #1) @ May fault
+USER( TUSER( ldrgtb) r3, [r1], #1) @ May fault
strgtb r3, [r0], #1
b .Lcfu_finished
ENDPROC(__copy_from_user)
--
Catalin
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Making allyesconfig work
2012-01-20 14:53 ` Catalin Marinas
@ 2012-01-20 22:43 ` Nicolas Pitre
2012-01-25 10:56 ` Catalin Marinas
0 siblings, 1 reply; 6+ messages in thread
From: Nicolas Pitre @ 2012-01-20 22:43 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, 20 Jan 2012, Catalin Marinas wrote:
> On Fri, Jan 20, 2012 at 12:24:02PM +0000, Russell King - ARM Linux wrote:
> > On Fri, Jan 20, 2012 at 12:08:56PM +0000, Catalin Marinas wrote:
> > > On Fri, Jan 20, 2012 at 11:51:08AM +0000, Russell King - ARM Linux wrote:
> > > > There's also the troublesome T() macro, which conflicts with a bunch
> > > > of other drivers. (I've added Catalin to the To: line for this
> > > > reason.)
> > >
> > > This macro is used in asm/uaccess.h and asm/futex.h, so I think it would
> > > be difficult to hide it completely. But I'm happy to rename it to
> > > something else (IIRC, T stands for "Translated").
> >
> > We should do something, because T() is just too risky for causing these
> > kinds of conflicts.
>
> Here's a patch. For lack of inspiration, I called it TUSER (and grep'ed
> the kernel, there isn't other reference to such name).
To be on the safe side, you could even call it ARM_TUSER.
> ARM: Rename the T() macro to TUSER() to avoid namespace conflicts
>
> From: Catalin Marinas <catalin.marinas@arm.com>
>
> This macro is used to generate unprivileged accesses (LDRT/STRT) to user
> space.
>
> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
In any case:
Acked-by: Nicolas Pitre <nico@linaro.org>
> ---
> arch/arm/include/asm/assembler.h | 4 +-
> arch/arm/include/asm/domain.h | 8 ++--
> arch/arm/include/asm/futex.h | 8 ++--
> arch/arm/include/asm/uaccess.h | 16 ++++---
> arch/arm/lib/getuser.S | 12 +++---
> arch/arm/lib/putuser.S | 28 ++++++-------
> arch/arm/lib/uaccess.S | 82 +++++++++++++++++++-------------------
> 7 files changed, 79 insertions(+), 79 deletions(-)
>
> diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h
> index b6e65de..62f8095 100644
> --- a/arch/arm/include/asm/assembler.h
> +++ b/arch/arm/include/asm/assembler.h
> @@ -237,7 +237,7 @@
> */
> #ifdef CONFIG_THUMB2_KERNEL
>
> - .macro usraccoff, instr, reg, ptr, inc, off, cond, abort, t=T()
> + .macro usraccoff, instr, reg, ptr, inc, off, cond, abort, t=TUSER()
> 9999:
> .if \inc == 1
> \instr\cond\()b\()\t\().w \reg, [\ptr, #\off]
> @@ -277,7 +277,7 @@
>
> #else /* !CONFIG_THUMB2_KERNEL */
>
> - .macro usracc, instr, reg, ptr, inc, cond, rept, abort, t=T()
> + .macro usracc, instr, reg, ptr, inc, cond, rept, abort, t=TUSER()
> .rept \rept
> 9999:
> .if \inc == 1
> diff --git a/arch/arm/include/asm/domain.h b/arch/arm/include/asm/domain.h
> index af18cea..b5dc173 100644
> --- a/arch/arm/include/asm/domain.h
> +++ b/arch/arm/include/asm/domain.h
> @@ -83,9 +83,9 @@
> * instructions (inline assembly)
> */
> #ifdef CONFIG_CPU_USE_DOMAINS
> -#define T(instr) #instr "t"
> +#define TUSER(instr) #instr "t"
> #else
> -#define T(instr) #instr
> +#define TUSER(instr) #instr
> #endif
>
> #else /* __ASSEMBLY__ */
> @@ -95,9 +95,9 @@
> * instructions
> */
> #ifdef CONFIG_CPU_USE_DOMAINS
> -#define T(instr) instr ## t
> +#define TUSER(instr) instr ## t
> #else
> -#define T(instr) instr
> +#define TUSER(instr) instr
> #endif
>
> #endif /* __ASSEMBLY__ */
> diff --git a/arch/arm/include/asm/futex.h b/arch/arm/include/asm/futex.h
> index 253cc86..7be5469 100644
> --- a/arch/arm/include/asm/futex.h
> +++ b/arch/arm/include/asm/futex.h
> @@ -75,9 +75,9 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
>
> #define __futex_atomic_op(insn, ret, oldval, tmp, uaddr, oparg) \
> __asm__ __volatile__( \
> - "1: " T(ldr) " %1, [%3]\n" \
> + "1: " TUSER(ldr) " %1, [%3]\n" \
> " " insn "\n" \
> - "2: " T(str) " %0, [%3]\n" \
> + "2: " TUSER(str) " %0, [%3]\n" \
> " mov %0, #0\n" \
> __futex_atomic_ex_table("%5") \
> : "=&r" (ret), "=&r" (oldval), "=&r" (tmp) \
> @@ -95,10 +95,10 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
> return -EFAULT;
>
> __asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n"
> - "1: " T(ldr) " %1, [%4]\n"
> + "1: " TUSER(ldr) " %1, [%4]\n"
> " teq %1, %2\n"
> " it eq @ explicit IT needed for the 2b label\n"
> - "2: " T(streq) " %3, [%4]\n"
> + "2: " TUSER(streq) " %3, [%4]\n"
> __futex_atomic_ex_table("%5")
> : "+r" (ret), "=&r" (val)
> : "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT)
> diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
> index b293616..2958976 100644
> --- a/arch/arm/include/asm/uaccess.h
> +++ b/arch/arm/include/asm/uaccess.h
> @@ -227,7 +227,7 @@ do { \
>
> #define __get_user_asm_byte(x,addr,err) \
> __asm__ __volatile__( \
> - "1: " T(ldrb) " %1,[%2],#0\n" \
> + "1: " TUSER(ldrb) " %1,[%2],#0\n" \
> "2:\n" \
> " .pushsection .fixup,\"ax\"\n" \
> " .align 2\n" \
> @@ -263,7 +263,7 @@ do { \
>
> #define __get_user_asm_word(x,addr,err) \
> __asm__ __volatile__( \
> - "1: " T(ldr) " %1,[%2],#0\n" \
> + "1: " TUSER(ldr) " %1,[%2],#0\n" \
> "2:\n" \
> " .pushsection .fixup,\"ax\"\n" \
> " .align 2\n" \
> @@ -308,7 +308,7 @@ do { \
>
> #define __put_user_asm_byte(x,__pu_addr,err) \
> __asm__ __volatile__( \
> - "1: " T(strb) " %1,[%2],#0\n" \
> + "1: " TUSER(strb) " %1,[%2],#0\n" \
> "2:\n" \
> " .pushsection .fixup,\"ax\"\n" \
> " .align 2\n" \
> @@ -341,7 +341,7 @@ do { \
>
> #define __put_user_asm_word(x,__pu_addr,err) \
> __asm__ __volatile__( \
> - "1: " T(str) " %1,[%2],#0\n" \
> + "1: " TUSER(str) " %1,[%2],#0\n" \
> "2:\n" \
> " .pushsection .fixup,\"ax\"\n" \
> " .align 2\n" \
> @@ -366,10 +366,10 @@ do { \
>
> #define __put_user_asm_dword(x,__pu_addr,err) \
> __asm__ __volatile__( \
> - ARM( "1: " T(str) " " __reg_oper1 ", [%1], #4\n" ) \
> - ARM( "2: " T(str) " " __reg_oper0 ", [%1]\n" ) \
> - THUMB( "1: " T(str) " " __reg_oper1 ", [%1]\n" ) \
> - THUMB( "2: " T(str) " " __reg_oper0 ", [%1, #4]\n" ) \
> + ARM( "1: " TUSER(str) " " __reg_oper1 ", [%1], #4\n" ) \
> + ARM( "2: " TUSER(str) " " __reg_oper0 ", [%1]\n" ) \
> + THUMB( "1: " TUSER(str) " " __reg_oper1 ", [%1]\n" ) \
> + THUMB( "2: " TUSER(str) " " __reg_oper0 ", [%1, #4]\n" ) \
> "3:\n" \
> " .pushsection .fixup,\"ax\"\n" \
> " .align 2\n" \
> diff --git a/arch/arm/lib/getuser.S b/arch/arm/lib/getuser.S
> index 1b049cd..11093a7 100644
> --- a/arch/arm/lib/getuser.S
> +++ b/arch/arm/lib/getuser.S
> @@ -31,18 +31,18 @@
> #include <asm/domain.h>
>
> ENTRY(__get_user_1)
> -1: T(ldrb) r2, [r0]
> +1: TUSER(ldrb) r2, [r0]
> mov r0, #0
> mov pc, lr
> ENDPROC(__get_user_1)
>
> ENTRY(__get_user_2)
> #ifdef CONFIG_THUMB2_KERNEL
> -2: T(ldrb) r2, [r0]
> -3: T(ldrb) r3, [r0, #1]
> +2: TUSER(ldrb) r2, [r0]
> +3: TUSER(ldrb) r3, [r0, #1]
> #else
> -2: T(ldrb) r2, [r0], #1
> -3: T(ldrb) r3, [r0]
> +2: TUSER(ldrb) r2, [r0], #1
> +3: TUSER(ldrb) r3, [r0]
> #endif
> #ifndef __ARMEB__
> orr r2, r2, r3, lsl #8
> @@ -54,7 +54,7 @@ ENTRY(__get_user_2)
> ENDPROC(__get_user_2)
>
> ENTRY(__get_user_4)
> -4: T(ldr) r2, [r0]
> +4: TUSER(ldr) r2, [r0]
> mov r0, #0
> mov pc, lr
> ENDPROC(__get_user_4)
> diff --git a/arch/arm/lib/putuser.S b/arch/arm/lib/putuser.S
> index c023fc1..7db2599 100644
> --- a/arch/arm/lib/putuser.S
> +++ b/arch/arm/lib/putuser.S
> @@ -31,7 +31,7 @@
> #include <asm/domain.h>
>
> ENTRY(__put_user_1)
> -1: T(strb) r2, [r0]
> +1: TUSER(strb) r2, [r0]
> mov r0, #0
> mov pc, lr
> ENDPROC(__put_user_1)
> @@ -40,19 +40,19 @@ ENTRY(__put_user_2)
> mov ip, r2, lsr #8
> #ifdef CONFIG_THUMB2_KERNEL
> #ifndef __ARMEB__
> -2: T(strb) r2, [r0]
> -3: T(strb) ip, [r0, #1]
> +2: TUSER(strb) r2, [r0]
> +3: TUSER(strb) ip, [r0, #1]
> #else
> -2: T(strb) ip, [r0]
> -3: T(strb) r2, [r0, #1]
> +2: TUSER(strb) ip, [r0]
> +3: TUSER(strb) r2, [r0, #1]
> #endif
> #else /* !CONFIG_THUMB2_KERNEL */
> #ifndef __ARMEB__
> -2: T(strb) r2, [r0], #1
> -3: T(strb) ip, [r0]
> +2: TUSER(strb) r2, [r0], #1
> +3: TUSER(strb) ip, [r0]
> #else
> -2: T(strb) ip, [r0], #1
> -3: T(strb) r2, [r0]
> +2: TUSER(strb) ip, [r0], #1
> +3: TUSER(strb) r2, [r0]
> #endif
> #endif /* CONFIG_THUMB2_KERNEL */
> mov r0, #0
> @@ -60,18 +60,18 @@ ENTRY(__put_user_2)
> ENDPROC(__put_user_2)
>
> ENTRY(__put_user_4)
> -4: T(str) r2, [r0]
> +4: TUSER(str) r2, [r0]
> mov r0, #0
> mov pc, lr
> ENDPROC(__put_user_4)
>
> ENTRY(__put_user_8)
> #ifdef CONFIG_THUMB2_KERNEL
> -5: T(str) r2, [r0]
> -6: T(str) r3, [r0, #4]
> +5: TUSER(str) r2, [r0]
> +6: TUSER(str) r3, [r0, #4]
> #else
> -5: T(str) r2, [r0], #4
> -6: T(str) r3, [r0]
> +5: TUSER(str) r2, [r0], #4
> +6: TUSER(str) r3, [r0]
> #endif
> mov r0, #0
> mov pc, lr
> diff --git a/arch/arm/lib/uaccess.S b/arch/arm/lib/uaccess.S
> index d0ece2a..5c908b1 100644
> --- a/arch/arm/lib/uaccess.S
> +++ b/arch/arm/lib/uaccess.S
> @@ -32,11 +32,11 @@
> rsb ip, ip, #4
> cmp ip, #2
> ldrb r3, [r1], #1
> -USER( T(strb) r3, [r0], #1) @ May fault
> +USER( TUSER( strb) r3, [r0], #1) @ May fault
> ldrgeb r3, [r1], #1
> -USER( T(strgeb) r3, [r0], #1) @ May fault
> +USER( TUSER( strgeb) r3, [r0], #1) @ May fault
> ldrgtb r3, [r1], #1
> -USER( T(strgtb) r3, [r0], #1) @ May fault
> +USER( TUSER( strgtb) r3, [r0], #1) @ May fault
> sub r2, r2, ip
> b .Lc2u_dest_aligned
>
> @@ -59,7 +59,7 @@ ENTRY(__copy_to_user)
> addmi ip, r2, #4
> bmi .Lc2u_0nowords
> ldr r3, [r1], #4
> -USER( T(str) r3, [r0], #4) @ May fault
> +USER( TUSER( str) r3, [r0], #4) @ May fault
> mov ip, r0, lsl #32 - PAGE_SHIFT @ On each page, use a ld/st??t instruction
> rsb ip, ip, #0
> movs ip, ip, lsr #32 - PAGE_SHIFT
> @@ -88,18 +88,18 @@ USER( T(str) r3, [r0], #4) @ May fault
> stmneia r0!, {r3 - r4} @ Shouldnt fault
> tst ip, #4
> ldrne r3, [r1], #4
> - T(strne) r3, [r0], #4 @ Shouldnt fault
> + TUSER( strne) r3, [r0], #4 @ Shouldnt fault
> ands ip, ip, #3
> beq .Lc2u_0fupi
> .Lc2u_0nowords: teq ip, #0
> beq .Lc2u_finished
> .Lc2u_nowords: cmp ip, #2
> ldrb r3, [r1], #1
> -USER( T(strb) r3, [r0], #1) @ May fault
> +USER( TUSER( strb) r3, [r0], #1) @ May fault
> ldrgeb r3, [r1], #1
> -USER( T(strgeb) r3, [r0], #1) @ May fault
> +USER( TUSER( strgeb) r3, [r0], #1) @ May fault
> ldrgtb r3, [r1], #1
> -USER( T(strgtb) r3, [r0], #1) @ May fault
> +USER( TUSER( strgtb) r3, [r0], #1) @ May fault
> b .Lc2u_finished
>
> .Lc2u_not_enough:
> @@ -120,7 +120,7 @@ USER( T(strgtb) r3, [r0], #1) @ May fault
> mov r3, r7, pull #8
> ldr r7, [r1], #4
> orr r3, r3, r7, push #24
> -USER( T(str) r3, [r0], #4) @ May fault
> +USER( TUSER( str) r3, [r0], #4) @ May fault
> mov ip, r0, lsl #32 - PAGE_SHIFT
> rsb ip, ip, #0
> movs ip, ip, lsr #32 - PAGE_SHIFT
> @@ -155,18 +155,18 @@ USER( T(str) r3, [r0], #4) @ May fault
> movne r3, r7, pull #8
> ldrne r7, [r1], #4
> orrne r3, r3, r7, push #24
> - T(strne) r3, [r0], #4 @ Shouldnt fault
> + TUSER( strne) r3, [r0], #4 @ Shouldnt fault
> ands ip, ip, #3
> beq .Lc2u_1fupi
> .Lc2u_1nowords: mov r3, r7, get_byte_1
> teq ip, #0
> beq .Lc2u_finished
> cmp ip, #2
> -USER( T(strb) r3, [r0], #1) @ May fault
> +USER( TUSER( strb) r3, [r0], #1) @ May fault
> movge r3, r7, get_byte_2
> -USER( T(strgeb) r3, [r0], #1) @ May fault
> +USER( TUSER( strgeb) r3, [r0], #1) @ May fault
> movgt r3, r7, get_byte_3
> -USER( T(strgtb) r3, [r0], #1) @ May fault
> +USER( TUSER( strgtb) r3, [r0], #1) @ May fault
> b .Lc2u_finished
>
> .Lc2u_2fupi: subs r2, r2, #4
> @@ -175,7 +175,7 @@ USER( T(strgtb) r3, [r0], #1) @ May fault
> mov r3, r7, pull #16
> ldr r7, [r1], #4
> orr r3, r3, r7, push #16
> -USER( T(str) r3, [r0], #4) @ May fault
> +USER( TUSER( str) r3, [r0], #4) @ May fault
> mov ip, r0, lsl #32 - PAGE_SHIFT
> rsb ip, ip, #0
> movs ip, ip, lsr #32 - PAGE_SHIFT
> @@ -210,18 +210,18 @@ USER( T(str) r3, [r0], #4) @ May fault
> movne r3, r7, pull #16
> ldrne r7, [r1], #4
> orrne r3, r3, r7, push #16
> - T(strne) r3, [r0], #4 @ Shouldnt fault
> + TUSER( strne) r3, [r0], #4 @ Shouldnt fault
> ands ip, ip, #3
> beq .Lc2u_2fupi
> .Lc2u_2nowords: mov r3, r7, get_byte_2
> teq ip, #0
> beq .Lc2u_finished
> cmp ip, #2
> -USER( T(strb) r3, [r0], #1) @ May fault
> +USER( TUSER( strb) r3, [r0], #1) @ May fault
> movge r3, r7, get_byte_3
> -USER( T(strgeb) r3, [r0], #1) @ May fault
> +USER( TUSER( strgeb) r3, [r0], #1) @ May fault
> ldrgtb r3, [r1], #0
> -USER( T(strgtb) r3, [r0], #1) @ May fault
> +USER( TUSER( strgtb) r3, [r0], #1) @ May fault
> b .Lc2u_finished
>
> .Lc2u_3fupi: subs r2, r2, #4
> @@ -230,7 +230,7 @@ USER( T(strgtb) r3, [r0], #1) @ May fault
> mov r3, r7, pull #24
> ldr r7, [r1], #4
> orr r3, r3, r7, push #8
> -USER( T(str) r3, [r0], #4) @ May fault
> +USER( TUSER( str) r3, [r0], #4) @ May fault
> mov ip, r0, lsl #32 - PAGE_SHIFT
> rsb ip, ip, #0
> movs ip, ip, lsr #32 - PAGE_SHIFT
> @@ -265,18 +265,18 @@ USER( T(str) r3, [r0], #4) @ May fault
> movne r3, r7, pull #24
> ldrne r7, [r1], #4
> orrne r3, r3, r7, push #8
> - T(strne) r3, [r0], #4 @ Shouldnt fault
> + TUSER( strne) r3, [r0], #4 @ Shouldnt fault
> ands ip, ip, #3
> beq .Lc2u_3fupi
> .Lc2u_3nowords: mov r3, r7, get_byte_3
> teq ip, #0
> beq .Lc2u_finished
> cmp ip, #2
> -USER( T(strb) r3, [r0], #1) @ May fault
> +USER( TUSER( strb) r3, [r0], #1) @ May fault
> ldrgeb r3, [r1], #1
> -USER( T(strgeb) r3, [r0], #1) @ May fault
> +USER( TUSER( strgeb) r3, [r0], #1) @ May fault
> ldrgtb r3, [r1], #0
> -USER( T(strgtb) r3, [r0], #1) @ May fault
> +USER( TUSER( strgtb) r3, [r0], #1) @ May fault
> b .Lc2u_finished
> ENDPROC(__copy_to_user)
>
> @@ -295,11 +295,11 @@ ENDPROC(__copy_to_user)
> .Lcfu_dest_not_aligned:
> rsb ip, ip, #4
> cmp ip, #2
> -USER( T(ldrb) r3, [r1], #1) @ May fault
> +USER( TUSER( ldrb) r3, [r1], #1) @ May fault
> strb r3, [r0], #1
> -USER( T(ldrgeb) r3, [r1], #1) @ May fault
> +USER( TUSER( ldrgeb) r3, [r1], #1) @ May fault
> strgeb r3, [r0], #1
> -USER( T(ldrgtb) r3, [r1], #1) @ May fault
> +USER( TUSER( ldrgtb) r3, [r1], #1) @ May fault
> strgtb r3, [r0], #1
> sub r2, r2, ip
> b .Lcfu_dest_aligned
> @@ -322,7 +322,7 @@ ENTRY(__copy_from_user)
> .Lcfu_0fupi: subs r2, r2, #4
> addmi ip, r2, #4
> bmi .Lcfu_0nowords
> -USER( T(ldr) r3, [r1], #4)
> +USER( TUSER( ldr) r3, [r1], #4)
> str r3, [r0], #4
> mov ip, r1, lsl #32 - PAGE_SHIFT @ On each page, use a ld/st??t instruction
> rsb ip, ip, #0
> @@ -351,18 +351,18 @@ USER( T(ldr) r3, [r1], #4)
> ldmneia r1!, {r3 - r4} @ Shouldnt fault
> stmneia r0!, {r3 - r4}
> tst ip, #4
> - T(ldrne) r3, [r1], #4 @ Shouldnt fault
> + TUSER( ldrne) r3, [r1], #4 @ Shouldnt fault
> strne r3, [r0], #4
> ands ip, ip, #3
> beq .Lcfu_0fupi
> .Lcfu_0nowords: teq ip, #0
> beq .Lcfu_finished
> .Lcfu_nowords: cmp ip, #2
> -USER( T(ldrb) r3, [r1], #1) @ May fault
> +USER( TUSER( ldrb) r3, [r1], #1) @ May fault
> strb r3, [r0], #1
> -USER( T(ldrgeb) r3, [r1], #1) @ May fault
> +USER( TUSER( ldrgeb) r3, [r1], #1) @ May fault
> strgeb r3, [r0], #1
> -USER( T(ldrgtb) r3, [r1], #1) @ May fault
> +USER( TUSER( ldrgtb) r3, [r1], #1) @ May fault
> strgtb r3, [r0], #1
> b .Lcfu_finished
>
> @@ -375,7 +375,7 @@ USER( T(ldrgtb) r3, [r1], #1) @ May fault
>
> .Lcfu_src_not_aligned:
> bic r1, r1, #3
> -USER( T(ldr) r7, [r1], #4) @ May fault
> +USER( TUSER( ldr) r7, [r1], #4) @ May fault
> cmp ip, #2
> bgt .Lcfu_3fupi
> beq .Lcfu_2fupi
> @@ -383,7 +383,7 @@ USER( T(ldr) r7, [r1], #4) @ May fault
> addmi ip, r2, #4
> bmi .Lcfu_1nowords
> mov r3, r7, pull #8
> -USER( T(ldr) r7, [r1], #4) @ May fault
> +USER( TUSER( ldr) r7, [r1], #4) @ May fault
> orr r3, r3, r7, push #24
> str r3, [r0], #4
> mov ip, r1, lsl #32 - PAGE_SHIFT
> @@ -418,7 +418,7 @@ USER( T(ldr) r7, [r1], #4) @ May fault
> stmneia r0!, {r3 - r4}
> tst ip, #4
> movne r3, r7, pull #8
> -USER( T(ldrne) r7, [r1], #4) @ May fault
> +USER( TUSER( ldrne) r7, [r1], #4) @ May fault
> orrne r3, r3, r7, push #24
> strne r3, [r0], #4
> ands ip, ip, #3
> @@ -438,7 +438,7 @@ USER( T(ldrne) r7, [r1], #4) @ May fault
> addmi ip, r2, #4
> bmi .Lcfu_2nowords
> mov r3, r7, pull #16
> -USER( T(ldr) r7, [r1], #4) @ May fault
> +USER( TUSER( ldr) r7, [r1], #4) @ May fault
> orr r3, r3, r7, push #16
> str r3, [r0], #4
> mov ip, r1, lsl #32 - PAGE_SHIFT
> @@ -474,7 +474,7 @@ USER( T(ldr) r7, [r1], #4) @ May fault
> stmneia r0!, {r3 - r4}
> tst ip, #4
> movne r3, r7, pull #16
> -USER( T(ldrne) r7, [r1], #4) @ May fault
> +USER( TUSER( ldrne) r7, [r1], #4) @ May fault
> orrne r3, r3, r7, push #16
> strne r3, [r0], #4
> ands ip, ip, #3
> @@ -486,7 +486,7 @@ USER( T(ldrne) r7, [r1], #4) @ May fault
> strb r3, [r0], #1
> movge r3, r7, get_byte_3
> strgeb r3, [r0], #1
> -USER( T(ldrgtb) r3, [r1], #0) @ May fault
> +USER( TUSER( ldrgtb) r3, [r1], #0) @ May fault
> strgtb r3, [r0], #1
> b .Lcfu_finished
>
> @@ -494,7 +494,7 @@ USER( T(ldrgtb) r3, [r1], #0) @ May fault
> addmi ip, r2, #4
> bmi .Lcfu_3nowords
> mov r3, r7, pull #24
> -USER( T(ldr) r7, [r1], #4) @ May fault
> +USER( TUSER( ldr) r7, [r1], #4) @ May fault
> orr r3, r3, r7, push #8
> str r3, [r0], #4
> mov ip, r1, lsl #32 - PAGE_SHIFT
> @@ -529,7 +529,7 @@ USER( T(ldr) r7, [r1], #4) @ May fault
> stmneia r0!, {r3 - r4}
> tst ip, #4
> movne r3, r7, pull #24
> -USER( T(ldrne) r7, [r1], #4) @ May fault
> +USER( TUSER( ldrne) r7, [r1], #4) @ May fault
> orrne r3, r3, r7, push #8
> strne r3, [r0], #4
> ands ip, ip, #3
> @@ -539,9 +539,9 @@ USER( T(ldrne) r7, [r1], #4) @ May fault
> beq .Lcfu_finished
> cmp ip, #2
> strb r3, [r0], #1
> -USER( T(ldrgeb) r3, [r1], #1) @ May fault
> +USER( TUSER( ldrgeb) r3, [r1], #1) @ May fault
> strgeb r3, [r0], #1
> -USER( T(ldrgtb) r3, [r1], #1) @ May fault
> +USER( TUSER( ldrgtb) r3, [r1], #1) @ May fault
> strgtb r3, [r0], #1
> b .Lcfu_finished
> ENDPROC(__copy_from_user)
>
>
> --
> Catalin
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Making allyesconfig work
2012-01-20 22:43 ` Nicolas Pitre
@ 2012-01-25 10:56 ` Catalin Marinas
0 siblings, 0 replies; 6+ messages in thread
From: Catalin Marinas @ 2012-01-25 10:56 UTC (permalink / raw)
To: linux-arm-kernel
On 20 January 2012 22:43, Nicolas Pitre <nico@fluxnic.net> wrote:
> On Fri, 20 Jan 2012, Catalin Marinas wrote:
>> On Fri, Jan 20, 2012 at 12:24:02PM +0000, Russell King - ARM Linux wrote:
>> > On Fri, Jan 20, 2012 at 12:08:56PM +0000, Catalin Marinas wrote:
>> > > On Fri, Jan 20, 2012 at 11:51:08AM +0000, Russell King - ARM Linux wrote:
>> > > > There's also the troublesome T() macro, which conflicts with a bunch
>> > > > of other drivers. ?(I've added Catalin to the To: line for this
>> > > > reason.)
>> > >
>> > > This macro is used in asm/uaccess.h and asm/futex.h, so I think it would
>> > > be difficult to hide it completely. But I'm happy to rename it to
>> > > something else (IIRC, T stands for "Translated").
>> >
>> > We should do something, because T() is just too risky for causing these
>> > kinds of conflicts.
>>
>> Here's a patch. For lack of inspiration, I called it TUSER (and grep'ed
>> the kernel, there isn't other reference to such name).
>
> To be on the safe side, you could even call it ARM_TUSER.
I thought about making it longer but some asm code becomes uglier with
so many characters.
> In any case:
>
> Acked-by: Nicolas Pitre <nico@linaro.org>
Thanks.
--
Catalin
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-01-25 10:56 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-20 11:51 Making allyesconfig work Russell King - ARM Linux
2012-01-20 12:08 ` Catalin Marinas
2012-01-20 12:24 ` Russell King - ARM Linux
2012-01-20 14:53 ` Catalin Marinas
2012-01-20 22:43 ` Nicolas Pitre
2012-01-25 10:56 ` Catalin Marinas
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).