mirror of
https://github.com/torvalds/linux.git
synced 2024-12-11 21:52:04 +00:00
Linux 4.9-rc8
-----BEGIN PGP SIGNATURE----- iQEcBAABAgAGBQJYRIGyAAoJEHm+PkMAQRiG2ksH/jwMUT9j6glbwESxbn1YTqTM QcBT5AMc7D0wNuidQe0hWZMtG4RbC+4ZhxzZl2wPgA2gueJ+rBnyX7bgtA7ka8ka Fdc3u/Q1v38HPzf8iBnxcdCs40VgsoMLjFYCXrpOxuGDNKYzRd+Q8aI2TeGvzbyi X8+6oAWifBwo2oA06jfcuUncEWbyDDyK9aQksmfKOpjHdb26yELPEhsPOlds1g7E jYLnvUVnU2CoFaumta+rZQ0kzLdc4Ntu0wEao6WzJuQKsgoID+tS/6iudi8cUhDp YowGAVoOfr6rAJB0mwrDVfugpamaT3386XKyocdNsK0/jR60UIJ8x+WzvvSU+lY= =JTBj -----END PGP SIGNATURE----- Backmerge tag 'v4.9-rc8' into drm-next Linux 4.9-rc8 Daniel requested this so we could apply some follow on fixes cleanly to -next.
This commit is contained in:
commit
f03ee46be9
8
CREDITS
8
CREDITS
@ -9,7 +9,7 @@
|
|||||||
Linus
|
Linus
|
||||||
----------
|
----------
|
||||||
|
|
||||||
M: Matt Mackal
|
N: Matt Mackal
|
||||||
E: mpm@selenic.com
|
E: mpm@selenic.com
|
||||||
D: SLOB slab allocator
|
D: SLOB slab allocator
|
||||||
|
|
||||||
@ -1910,7 +1910,7 @@ S: Ra'annana, Israel
|
|||||||
|
|
||||||
N: Andi Kleen
|
N: Andi Kleen
|
||||||
E: andi@firstfloor.org
|
E: andi@firstfloor.org
|
||||||
U: http://www.halobates.de
|
W: http://www.halobates.de
|
||||||
D: network, x86, NUMA, various hacks
|
D: network, x86, NUMA, various hacks
|
||||||
S: Schwalbenstr. 96
|
S: Schwalbenstr. 96
|
||||||
S: 85551 Ottobrunn
|
S: 85551 Ottobrunn
|
||||||
@ -2089,8 +2089,8 @@ D: ST Microelectronics SPEAr13xx PCI host bridge driver
|
|||||||
D: Synopsys Designware PCI host bridge driver
|
D: Synopsys Designware PCI host bridge driver
|
||||||
|
|
||||||
N: Gabor Kuti
|
N: Gabor Kuti
|
||||||
M: seasons@falcon.sch.bme.hu
|
E: seasons@falcon.sch.bme.hu
|
||||||
M: seasons@makosteszta.sote.hu
|
E: seasons@makosteszta.sote.hu
|
||||||
D: Original author of software suspend
|
D: Original author of software suspend
|
||||||
|
|
||||||
N: Jaroslav Kysela
|
N: Jaroslav Kysela
|
||||||
|
@ -6,7 +6,7 @@ perform in-band IPMI communication with their host.
|
|||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
|
|
||||||
- compatible : should be "aspeed,ast2400-bt-bmc"
|
- compatible : should be "aspeed,ast2400-ibt-bmc"
|
||||||
- reg: physical address and size of the registers
|
- reg: physical address and size of the registers
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
@ -17,7 +17,7 @@ Optional properties:
|
|||||||
Example:
|
Example:
|
||||||
|
|
||||||
ibt@1e789140 {
|
ibt@1e789140 {
|
||||||
compatible = "aspeed,ast2400-bt-bmc";
|
compatible = "aspeed,ast2400-ibt-bmc";
|
||||||
reg = <0x1e789140 0x18>;
|
reg = <0x1e789140 0x18>;
|
||||||
interrupts = <8>;
|
interrupts = <8>;
|
||||||
};
|
};
|
@ -9,10 +9,26 @@ The following properties are common to the Ethernet controllers:
|
|||||||
- max-speed: number, specifies maximum speed in Mbit/s supported by the device;
|
- max-speed: number, specifies maximum speed in Mbit/s supported by the device;
|
||||||
- max-frame-size: number, maximum transfer unit (IEEE defined MTU), rather than
|
- max-frame-size: number, maximum transfer unit (IEEE defined MTU), rather than
|
||||||
the maximum frame size (there's contradiction in ePAPR).
|
the maximum frame size (there's contradiction in ePAPR).
|
||||||
- phy-mode: string, operation mode of the PHY interface; supported values are
|
- phy-mode: string, operation mode of the PHY interface. This is now a de-facto
|
||||||
"mii", "gmii", "sgmii", "qsgmii", "tbi", "rev-mii", "rmii", "rgmii", "rgmii-id",
|
standard property; supported values are:
|
||||||
"rgmii-rxid", "rgmii-txid", "rtbi", "smii", "xgmii", "trgmii"; this is now a
|
* "mii"
|
||||||
de-facto standard property;
|
* "gmii"
|
||||||
|
* "sgmii"
|
||||||
|
* "qsgmii"
|
||||||
|
* "tbi"
|
||||||
|
* "rev-mii"
|
||||||
|
* "rmii"
|
||||||
|
* "rgmii" (RX and TX delays are added by the MAC when required)
|
||||||
|
* "rgmii-id" (RGMII with internal RX and TX delays provided by the PHY, the
|
||||||
|
MAC should not add the RX or TX delays in this case)
|
||||||
|
* "rgmii-rxid" (RGMII with internal RX delay provided by the PHY, the MAC
|
||||||
|
should not add an RX delay in this case)
|
||||||
|
* "rgmii-txid" (RGMII with internal TX delay provided by the PHY, the MAC
|
||||||
|
should not add an TX delay in this case)
|
||||||
|
* "rtbi"
|
||||||
|
* "smii"
|
||||||
|
* "xgmii"
|
||||||
|
* "trgmii"
|
||||||
- phy-connection-type: the same as "phy-mode" property but described in ePAPR;
|
- phy-connection-type: the same as "phy-mode" property but described in ePAPR;
|
||||||
- phy-handle: phandle, specifies a reference to a node representing a PHY
|
- phy-handle: phandle, specifies a reference to a node representing a PHY
|
||||||
device; this property is described in ePAPR and so preferred;
|
device; this property is described in ePAPR and so preferred;
|
||||||
|
@ -12,7 +12,7 @@ Required properties:
|
|||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- ti,dmic: phandle for the OMAP dmic node if the machine have it connected
|
- ti,dmic: phandle for the OMAP dmic node if the machine have it connected
|
||||||
- ti,jack_detection: Need to be present if the board capable to detect jack
|
- ti,jack-detection: Need to be present if the board capable to detect jack
|
||||||
insertion, removal.
|
insertion, removal.
|
||||||
|
|
||||||
Available audio endpoints for the audio-routing table:
|
Available audio endpoints for the audio-routing table:
|
||||||
|
@ -326,7 +326,7 @@ Two parent-locked sibling muxes
|
|||||||
|
|
||||||
This is a good topology.
|
This is a good topology.
|
||||||
|
|
||||||
.--------.
|
.--------.
|
||||||
.----------. .--| dev D1 |
|
.----------. .--| dev D1 |
|
||||||
| parent- |--' '--------'
|
| parent- |--' '--------'
|
||||||
.--| locked | .--------.
|
.--| locked | .--------.
|
||||||
@ -350,7 +350,7 @@ Mux-locked and parent-locked sibling muxes
|
|||||||
|
|
||||||
This is a good topology.
|
This is a good topology.
|
||||||
|
|
||||||
.--------.
|
.--------.
|
||||||
.----------. .--| dev D1 |
|
.----------. .--| dev D1 |
|
||||||
| mux- |--' '--------'
|
| mux- |--' '--------'
|
||||||
.--| locked | .--------.
|
.--| locked | .--------.
|
||||||
|
@ -67,13 +67,14 @@ Note that DSA does not currently create network interfaces for the "cpu" and
|
|||||||
Switch tagging protocols
|
Switch tagging protocols
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
DSA currently supports 4 different tagging protocols, and a tag-less mode as
|
DSA currently supports 5 different tagging protocols, and a tag-less mode as
|
||||||
well. The different protocols are implemented in:
|
well. The different protocols are implemented in:
|
||||||
|
|
||||||
net/dsa/tag_trailer.c: Marvell's 4 trailer tag mode (legacy)
|
net/dsa/tag_trailer.c: Marvell's 4 trailer tag mode (legacy)
|
||||||
net/dsa/tag_dsa.c: Marvell's original DSA tag
|
net/dsa/tag_dsa.c: Marvell's original DSA tag
|
||||||
net/dsa/tag_edsa.c: Marvell's enhanced DSA tag
|
net/dsa/tag_edsa.c: Marvell's enhanced DSA tag
|
||||||
net/dsa/tag_brcm.c: Broadcom's 4 bytes tag
|
net/dsa/tag_brcm.c: Broadcom's 4 bytes tag
|
||||||
|
net/dsa/tag_qca.c: Qualcomm's 2 bytes tag
|
||||||
|
|
||||||
The exact format of the tag protocol is vendor specific, but in general, they
|
The exact format of the tag protocol is vendor specific, but in general, they
|
||||||
all contain something which:
|
all contain something which:
|
||||||
|
@ -62,10 +62,13 @@ nf_conntrack_generic_timeout - INTEGER (seconds)
|
|||||||
protocols.
|
protocols.
|
||||||
|
|
||||||
nf_conntrack_helper - BOOLEAN
|
nf_conntrack_helper - BOOLEAN
|
||||||
0 - disabled
|
0 - disabled (default)
|
||||||
not 0 - enabled (default)
|
not 0 - enabled
|
||||||
|
|
||||||
Enable automatic conntrack helper assignment.
|
Enable automatic conntrack helper assignment.
|
||||||
|
If disabled it is required to set up iptables rules to assign
|
||||||
|
helpers to connections. See the CT target description in the
|
||||||
|
iptables-extensions(8) man page for further information.
|
||||||
|
|
||||||
nf_conntrack_icmp_timeout - INTEGER (seconds)
|
nf_conntrack_icmp_timeout - INTEGER (seconds)
|
||||||
default 30
|
default 30
|
||||||
|
@ -777,6 +777,17 @@ Gets the current timestamp of kvmclock as seen by the current guest. In
|
|||||||
conjunction with KVM_SET_CLOCK, it is used to ensure monotonicity on scenarios
|
conjunction with KVM_SET_CLOCK, it is used to ensure monotonicity on scenarios
|
||||||
such as migration.
|
such as migration.
|
||||||
|
|
||||||
|
When KVM_CAP_ADJUST_CLOCK is passed to KVM_CHECK_EXTENSION, it returns the
|
||||||
|
set of bits that KVM can return in struct kvm_clock_data's flag member.
|
||||||
|
|
||||||
|
The only flag defined now is KVM_CLOCK_TSC_STABLE. If set, the returned
|
||||||
|
value is the exact kvmclock value seen by all VCPUs at the instant
|
||||||
|
when KVM_GET_CLOCK was called. If clear, the returned value is simply
|
||||||
|
CLOCK_MONOTONIC plus a constant offset; the offset can be modified
|
||||||
|
with KVM_SET_CLOCK. KVM will try to make all VCPUs follow this clock,
|
||||||
|
but the exact value read by each VCPU could differ, because the host
|
||||||
|
TSC is not stable.
|
||||||
|
|
||||||
struct kvm_clock_data {
|
struct kvm_clock_data {
|
||||||
__u64 clock; /* kvmclock current value */
|
__u64 clock; /* kvmclock current value */
|
||||||
__u32 flags;
|
__u32 flags;
|
||||||
|
25
MAINTAINERS
25
MAINTAINERS
@ -77,6 +77,7 @@ Descriptions of section entries:
|
|||||||
Q: Patchwork web based patch tracking system site
|
Q: Patchwork web based patch tracking system site
|
||||||
T: SCM tree type and location.
|
T: SCM tree type and location.
|
||||||
Type is one of: git, hg, quilt, stgit, topgit
|
Type is one of: git, hg, quilt, stgit, topgit
|
||||||
|
B: Bug tracking system location.
|
||||||
S: Status, one of the following:
|
S: Status, one of the following:
|
||||||
Supported: Someone is actually paid to look after this.
|
Supported: Someone is actually paid to look after this.
|
||||||
Maintained: Someone actually looks after it.
|
Maintained: Someone actually looks after it.
|
||||||
@ -281,6 +282,7 @@ L: linux-acpi@vger.kernel.org
|
|||||||
W: https://01.org/linux-acpi
|
W: https://01.org/linux-acpi
|
||||||
Q: https://patchwork.kernel.org/project/linux-acpi/list/
|
Q: https://patchwork.kernel.org/project/linux-acpi/list/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
|
||||||
|
B: https://bugzilla.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/acpi/
|
F: drivers/acpi/
|
||||||
F: drivers/pnp/pnpacpi/
|
F: drivers/pnp/pnpacpi/
|
||||||
@ -304,6 +306,8 @@ W: https://acpica.org/
|
|||||||
W: https://github.com/acpica/acpica/
|
W: https://github.com/acpica/acpica/
|
||||||
Q: https://patchwork.kernel.org/project/linux-acpi/list/
|
Q: https://patchwork.kernel.org/project/linux-acpi/list/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
|
||||||
|
B: https://bugzilla.kernel.org
|
||||||
|
B: https://bugs.acpica.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/acpi/acpica/
|
F: drivers/acpi/acpica/
|
||||||
F: include/acpi/
|
F: include/acpi/
|
||||||
@ -313,6 +317,7 @@ ACPI FAN DRIVER
|
|||||||
M: Zhang Rui <rui.zhang@intel.com>
|
M: Zhang Rui <rui.zhang@intel.com>
|
||||||
L: linux-acpi@vger.kernel.org
|
L: linux-acpi@vger.kernel.org
|
||||||
W: https://01.org/linux-acpi
|
W: https://01.org/linux-acpi
|
||||||
|
B: https://bugzilla.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/acpi/fan.c
|
F: drivers/acpi/fan.c
|
||||||
|
|
||||||
@ -328,6 +333,7 @@ ACPI THERMAL DRIVER
|
|||||||
M: Zhang Rui <rui.zhang@intel.com>
|
M: Zhang Rui <rui.zhang@intel.com>
|
||||||
L: linux-acpi@vger.kernel.org
|
L: linux-acpi@vger.kernel.org
|
||||||
W: https://01.org/linux-acpi
|
W: https://01.org/linux-acpi
|
||||||
|
B: https://bugzilla.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/acpi/*thermal*
|
F: drivers/acpi/*thermal*
|
||||||
|
|
||||||
@ -335,6 +341,7 @@ ACPI VIDEO DRIVER
|
|||||||
M: Zhang Rui <rui.zhang@intel.com>
|
M: Zhang Rui <rui.zhang@intel.com>
|
||||||
L: linux-acpi@vger.kernel.org
|
L: linux-acpi@vger.kernel.org
|
||||||
W: https://01.org/linux-acpi
|
W: https://01.org/linux-acpi
|
||||||
|
B: https://bugzilla.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/acpi/acpi_video.c
|
F: drivers/acpi/acpi_video.c
|
||||||
|
|
||||||
@ -5701,6 +5708,7 @@ HIBERNATION (aka Software Suspend, aka swsusp)
|
|||||||
M: "Rafael J. Wysocki" <rjw@rjwysocki.net>
|
M: "Rafael J. Wysocki" <rjw@rjwysocki.net>
|
||||||
M: Pavel Machek <pavel@ucw.cz>
|
M: Pavel Machek <pavel@ucw.cz>
|
||||||
L: linux-pm@vger.kernel.org
|
L: linux-pm@vger.kernel.org
|
||||||
|
B: https://bugzilla.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: arch/x86/power/
|
F: arch/x86/power/
|
||||||
F: drivers/base/power/
|
F: drivers/base/power/
|
||||||
@ -7122,6 +7130,7 @@ F: drivers/scsi/53c700*
|
|||||||
LED SUBSYSTEM
|
LED SUBSYSTEM
|
||||||
M: Richard Purdie <rpurdie@rpsys.net>
|
M: Richard Purdie <rpurdie@rpsys.net>
|
||||||
M: Jacek Anaszewski <j.anaszewski@samsung.com>
|
M: Jacek Anaszewski <j.anaszewski@samsung.com>
|
||||||
|
M: Pavel Machek <pavel@ucw.cz>
|
||||||
L: linux-leds@vger.kernel.org
|
L: linux-leds@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -8095,6 +8104,7 @@ F: drivers/infiniband/hw/mlx4/
|
|||||||
F: include/linux/mlx4/
|
F: include/linux/mlx4/
|
||||||
|
|
||||||
MELLANOX MLX5 core VPI driver
|
MELLANOX MLX5 core VPI driver
|
||||||
|
M: Saeed Mahameed <saeedm@mellanox.com>
|
||||||
M: Matan Barak <matanb@mellanox.com>
|
M: Matan Barak <matanb@mellanox.com>
|
||||||
M: Leon Romanovsky <leonro@mellanox.com>
|
M: Leon Romanovsky <leonro@mellanox.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
@ -9285,11 +9295,12 @@ S: Maintained
|
|||||||
F: drivers/pci/host/*layerscape*
|
F: drivers/pci/host/*layerscape*
|
||||||
|
|
||||||
PCI DRIVER FOR IMX6
|
PCI DRIVER FOR IMX6
|
||||||
M: Richard Zhu <Richard.Zhu@freescale.com>
|
M: Richard Zhu <hongxing.zhu@nxp.com>
|
||||||
M: Lucas Stach <l.stach@pengutronix.de>
|
M: Lucas Stach <l.stach@pengutronix.de>
|
||||||
L: linux-pci@vger.kernel.org
|
L: linux-pci@vger.kernel.org
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt
|
||||||
F: drivers/pci/host/*imx6*
|
F: drivers/pci/host/*imx6*
|
||||||
|
|
||||||
PCI DRIVER FOR TI KEYSTONE
|
PCI DRIVER FOR TI KEYSTONE
|
||||||
@ -9348,17 +9359,11 @@ F: drivers/pci/host/pci-exynos.c
|
|||||||
|
|
||||||
PCI DRIVER FOR SYNOPSIS DESIGNWARE
|
PCI DRIVER FOR SYNOPSIS DESIGNWARE
|
||||||
M: Jingoo Han <jingoohan1@gmail.com>
|
M: Jingoo Han <jingoohan1@gmail.com>
|
||||||
M: Pratyush Anand <pratyush.anand@gmail.com>
|
M: Joao Pinto <Joao.Pinto@synopsys.com>
|
||||||
L: linux-pci@vger.kernel.org
|
|
||||||
S: Maintained
|
|
||||||
F: drivers/pci/host/*designware*
|
|
||||||
|
|
||||||
PCI DRIVER FOR SYNOPSYS PROTOTYPING DEVICE
|
|
||||||
M: Jose Abreu <Jose.Abreu@synopsys.com>
|
|
||||||
L: linux-pci@vger.kernel.org
|
L: linux-pci@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/pci/designware-pcie.txt
|
F: Documentation/devicetree/bindings/pci/designware-pcie.txt
|
||||||
F: drivers/pci/host/pcie-designware-plat.c
|
F: drivers/pci/host/*designware*
|
||||||
|
|
||||||
PCI DRIVER FOR GENERIC OF HOSTS
|
PCI DRIVER FOR GENERIC OF HOSTS
|
||||||
M: Will Deacon <will.deacon@arm.com>
|
M: Will Deacon <will.deacon@arm.com>
|
||||||
@ -9660,6 +9665,7 @@ POWER MANAGEMENT CORE
|
|||||||
M: "Rafael J. Wysocki" <rjw@rjwysocki.net>
|
M: "Rafael J. Wysocki" <rjw@rjwysocki.net>
|
||||||
L: linux-pm@vger.kernel.org
|
L: linux-pm@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
|
||||||
|
B: https://bugzilla.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/base/power/
|
F: drivers/base/power/
|
||||||
F: include/linux/pm.h
|
F: include/linux/pm.h
|
||||||
@ -11649,6 +11655,7 @@ M: "Rafael J. Wysocki" <rjw@rjwysocki.net>
|
|||||||
M: Len Brown <len.brown@intel.com>
|
M: Len Brown <len.brown@intel.com>
|
||||||
M: Pavel Machek <pavel@ucw.cz>
|
M: Pavel Machek <pavel@ucw.cz>
|
||||||
L: linux-pm@vger.kernel.org
|
L: linux-pm@vger.kernel.org
|
||||||
|
B: https://bugzilla.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/power/
|
F: Documentation/power/
|
||||||
F: arch/x86/kernel/acpi/
|
F: arch/x86/kernel/acpi/
|
||||||
|
18
Makefile
18
Makefile
@ -1,7 +1,7 @@
|
|||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 9
|
PATCHLEVEL = 9
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc5
|
EXTRAVERSION = -rc8
|
||||||
NAME = Psychotic Stoned Sheep
|
NAME = Psychotic Stoned Sheep
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
@ -399,11 +399,12 @@ KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
|
|||||||
-fno-strict-aliasing -fno-common \
|
-fno-strict-aliasing -fno-common \
|
||||||
-Werror-implicit-function-declaration \
|
-Werror-implicit-function-declaration \
|
||||||
-Wno-format-security \
|
-Wno-format-security \
|
||||||
-std=gnu89
|
-std=gnu89 $(call cc-option,-fno-PIE)
|
||||||
|
|
||||||
|
|
||||||
KBUILD_AFLAGS_KERNEL :=
|
KBUILD_AFLAGS_KERNEL :=
|
||||||
KBUILD_CFLAGS_KERNEL :=
|
KBUILD_CFLAGS_KERNEL :=
|
||||||
KBUILD_AFLAGS := -D__ASSEMBLY__
|
KBUILD_AFLAGS := -D__ASSEMBLY__ $(call cc-option,-fno-PIE)
|
||||||
KBUILD_AFLAGS_MODULE := -DMODULE
|
KBUILD_AFLAGS_MODULE := -DMODULE
|
||||||
KBUILD_CFLAGS_MODULE := -DMODULE
|
KBUILD_CFLAGS_MODULE := -DMODULE
|
||||||
KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
|
KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
|
||||||
@ -606,6 +607,13 @@ else
|
|||||||
include/config/auto.conf: ;
|
include/config/auto.conf: ;
|
||||||
endif # $(dot-config)
|
endif # $(dot-config)
|
||||||
|
|
||||||
|
# For the kernel to actually contain only the needed exported symbols,
|
||||||
|
# we have to build modules as well to determine what those symbols are.
|
||||||
|
# (this can be evaluated only once include/config/auto.conf has been included)
|
||||||
|
ifdef CONFIG_TRIM_UNUSED_KSYMS
|
||||||
|
KBUILD_MODULES := 1
|
||||||
|
endif
|
||||||
|
|
||||||
# The all: target is the default when no target is given on the
|
# The all: target is the default when no target is given on the
|
||||||
# command line.
|
# command line.
|
||||||
# This allow a user to issue only 'make' to build a kernel including modules
|
# This allow a user to issue only 'make' to build a kernel including modules
|
||||||
@ -943,7 +951,7 @@ ifdef CONFIG_GDB_SCRIPTS
|
|||||||
endif
|
endif
|
||||||
ifdef CONFIG_TRIM_UNUSED_KSYMS
|
ifdef CONFIG_TRIM_UNUSED_KSYMS
|
||||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
|
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
|
||||||
"$(MAKE) KBUILD_MODULES=1 -f $(srctree)/Makefile vmlinux_prereq"
|
"$(MAKE) -f $(srctree)/Makefile vmlinux"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# standalone target for easier testing
|
# standalone target for easier testing
|
||||||
@ -1018,8 +1026,6 @@ prepare2: prepare3 prepare-compiler-check outputmakefile asm-generic
|
|||||||
prepare1: prepare2 $(version_h) include/generated/utsrelease.h \
|
prepare1: prepare2 $(version_h) include/generated/utsrelease.h \
|
||||||
include/config/auto.conf
|
include/config/auto.conf
|
||||||
$(cmd_crmodverdir)
|
$(cmd_crmodverdir)
|
||||||
$(Q)test -e include/generated/autoksyms.h || \
|
|
||||||
touch include/generated/autoksyms.h
|
|
||||||
|
|
||||||
archprepare: archheaders archscripts prepare1 scripts_basic
|
archprepare: archheaders archscripts prepare1 scripts_basic
|
||||||
|
|
||||||
|
@ -22,10 +22,11 @@
|
|||||||
static inline void __delay(unsigned long loops)
|
static inline void __delay(unsigned long loops)
|
||||||
{
|
{
|
||||||
__asm__ __volatile__(
|
__asm__ __volatile__(
|
||||||
" lp 1f \n"
|
" mov lp_count, %0 \n"
|
||||||
" nop \n"
|
" lp 1f \n"
|
||||||
"1: \n"
|
" nop \n"
|
||||||
: "+l"(loops));
|
"1: \n"
|
||||||
|
: : "r"(loops));
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void __bad_udelay(void);
|
extern void __bad_udelay(void);
|
||||||
|
@ -280,7 +280,7 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep)
|
|||||||
|
|
||||||
#define pte_page(pte) pfn_to_page(pte_pfn(pte))
|
#define pte_page(pte) pfn_to_page(pte_pfn(pte))
|
||||||
#define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot)
|
#define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot)
|
||||||
#define pfn_pte(pfn, prot) __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
|
#define pfn_pte(pfn, prot) __pte(__pfn_to_phys(pfn) | pgprot_val(prot))
|
||||||
|
|
||||||
/* Don't use virt_to_pfn for macros below: could cause truncations for PAE40*/
|
/* Don't use virt_to_pfn for macros below: could cause truncations for PAE40*/
|
||||||
#define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT)
|
#define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT)
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
static int l2_line_sz;
|
static int l2_line_sz;
|
||||||
static int ioc_exists;
|
static int ioc_exists;
|
||||||
int slc_enable = 1, ioc_enable = 1;
|
int slc_enable = 1, ioc_enable = 0;
|
||||||
unsigned long perip_base = ARC_UNCACHED_ADDR_SPACE; /* legacy value for boot */
|
unsigned long perip_base = ARC_UNCACHED_ADDR_SPACE; /* legacy value for boot */
|
||||||
unsigned long perip_end = 0xFFFFFFFF; /* legacy value */
|
unsigned long perip_end = 0xFFFFFFFF; /* legacy value */
|
||||||
|
|
||||||
|
@ -745,7 +745,6 @@ dtb-$(CONFIG_MACH_SUN4I) += \
|
|||||||
sun4i-a10-pcduino2.dtb \
|
sun4i-a10-pcduino2.dtb \
|
||||||
sun4i-a10-pov-protab2-ips9.dtb
|
sun4i-a10-pov-protab2-ips9.dtb
|
||||||
dtb-$(CONFIG_MACH_SUN5I) += \
|
dtb-$(CONFIG_MACH_SUN5I) += \
|
||||||
ntc-gr8-evb.dtb \
|
|
||||||
sun5i-a10s-auxtek-t003.dtb \
|
sun5i-a10s-auxtek-t003.dtb \
|
||||||
sun5i-a10s-auxtek-t004.dtb \
|
sun5i-a10s-auxtek-t004.dtb \
|
||||||
sun5i-a10s-mk802.dtb \
|
sun5i-a10s-mk802.dtb \
|
||||||
@ -761,6 +760,7 @@ dtb-$(CONFIG_MACH_SUN5I) += \
|
|||||||
sun5i-a13-olinuxino-micro.dtb \
|
sun5i-a13-olinuxino-micro.dtb \
|
||||||
sun5i-a13-q8-tablet.dtb \
|
sun5i-a13-q8-tablet.dtb \
|
||||||
sun5i-a13-utoo-p66.dtb \
|
sun5i-a13-utoo-p66.dtb \
|
||||||
|
sun5i-gr8-evb.dtb \
|
||||||
sun5i-r8-chip.dtb
|
sun5i-r8-chip.dtb
|
||||||
dtb-$(CONFIG_MACH_SUN6I) += \
|
dtb-$(CONFIG_MACH_SUN6I) += \
|
||||||
sun6i-a31-app4-evb1.dtb \
|
sun6i-a31-app4-evb1.dtb \
|
||||||
|
@ -64,8 +64,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
ldo3_reg: ldo3 {
|
ldo3_reg: ldo3 {
|
||||||
regulator-min-microvolt = <600000>;
|
regulator-min-microvolt = <1725000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -76,8 +76,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
ldo5_reg: ldo5 {
|
ldo5_reg: ldo5 {
|
||||||
regulator-min-microvolt = <1725000>;
|
regulator-min-microvolt = <1200000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3600000>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -100,14 +100,14 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
ldo9_reg: ldo9 {
|
ldo9_reg: ldo9 {
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <1250000>;
|
||||||
regulator-max-microvolt = <3600000>;
|
regulator-max-microvolt = <3600000>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
ldo10_reg: ldo10 {
|
ldo10_reg: ldo10 {
|
||||||
regulator-min-microvolt = <1250000>;
|
regulator-min-microvolt = <1200000>;
|
||||||
regulator-max-microvolt = <3650000>;
|
regulator-max-microvolt = <3600000>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -13,6 +13,11 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
memory@80000000 {
|
||||||
|
device_type = "memory";
|
||||||
|
reg = <0x80000000 0>;
|
||||||
|
};
|
||||||
|
|
||||||
wl12xx_vmmc: wl12xx_vmmc {
|
wl12xx_vmmc: wl12xx_vmmc {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "vwl1271";
|
regulator-name = "vwl1271";
|
||||||
|
@ -13,9 +13,9 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
memory@0 {
|
memory@80000000 {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0 0>;
|
reg = <0x80000000 0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
|
@ -124,6 +124,7 @@
|
|||||||
compatible = "ti,abe-twl6040";
|
compatible = "ti,abe-twl6040";
|
||||||
ti,model = "omap5-uevm";
|
ti,model = "omap5-uevm";
|
||||||
|
|
||||||
|
ti,jack-detection;
|
||||||
ti,mclk-freq = <19200000>;
|
ti,mclk-freq = <19200000>;
|
||||||
|
|
||||||
ti,mcpdm = <&mcpdm>;
|
ti,mcpdm = <&mcpdm>;
|
||||||
@ -415,7 +416,7 @@
|
|||||||
ti,backup-battery-charge-high-current;
|
ti,backup-battery-charge-high-current;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpadc {
|
gpadc: gpadc {
|
||||||
compatible = "ti,palmas-gpadc";
|
compatible = "ti,palmas-gpadc";
|
||||||
interrupts = <18 0
|
interrupts = <18 0
|
||||||
16 0
|
16 0
|
||||||
@ -475,8 +476,8 @@
|
|||||||
smps6_reg: smps6 {
|
smps6_reg: smps6 {
|
||||||
/* VDD_DDR3 - over VDD_SMPS6 */
|
/* VDD_DDR3 - over VDD_SMPS6 */
|
||||||
regulator-name = "smps6";
|
regulator-name = "smps6";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <1350000>;
|
||||||
regulator-max-microvolt = <1200000>;
|
regulator-max-microvolt = <1350000>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
};
|
};
|
||||||
|
@ -283,6 +283,8 @@
|
|||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_i2c0_default>;
|
pinctrl-0 = <&pinctrl_i2c0_default>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
@ -296,6 +298,8 @@
|
|||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_i2c1_default>;
|
pinctrl-0 = <&pinctrl_i2c1_default>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
@ -309,6 +313,8 @@
|
|||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_i2c2_default>;
|
pinctrl-0 = <&pinctrl_i2c2_default>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
@ -322,6 +328,8 @@
|
|||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_i2c3_default>;
|
pinctrl-0 = <&pinctrl_i2c3_default>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
@ -335,6 +343,8 @@
|
|||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_i2c4_default>;
|
pinctrl-0 = <&pinctrl_i2c4_default>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
@ -348,6 +358,8 @@
|
|||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_i2c5_default>;
|
pinctrl-0 = <&pinctrl_i2c5_default>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
@ -363,6 +375,8 @@
|
|||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_i2c10_default>;
|
pinctrl-0 = <&pinctrl_i2c10_default>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
@ -376,6 +390,8 @@
|
|||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_i2c11_default>;
|
pinctrl-0 = <&pinctrl_i2c11_default>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
@ -74,7 +74,7 @@
|
|||||||
/* Low speed expansion connector */
|
/* Low speed expansion connector */
|
||||||
spi0: spi@9844000 {
|
spi0: spi@9844000 {
|
||||||
label = "LS-SPI0";
|
label = "LS-SPI0";
|
||||||
cs-gpio = <&pio30 3 0>;
|
cs-gpios = <&pio30 3 0>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
#include "ntc-gr8.dtsi"
|
#include "sun5i-gr8.dtsi"
|
||||||
#include "sunxi-common-regulators.dtsi"
|
#include "sunxi-common-regulators.dtsi"
|
||||||
|
|
||||||
#include <dt-bindings/gpio/gpio.h>
|
#include <dt-bindings/gpio/gpio.h>
|
@ -282,11 +282,15 @@
|
|||||||
uart1_pins_a: uart1@0 {
|
uart1_pins_a: uart1@0 {
|
||||||
allwinner,pins = "PG6", "PG7";
|
allwinner,pins = "PG6", "PG7";
|
||||||
allwinner,function = "uart1";
|
allwinner,function = "uart1";
|
||||||
|
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||||
|
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||||
};
|
};
|
||||||
|
|
||||||
uart1_pins_cts_rts_a: uart1-cts-rts@0 {
|
uart1_pins_cts_rts_a: uart1-cts-rts@0 {
|
||||||
allwinner,pins = "PG8", "PG9";
|
allwinner,pins = "PG8", "PG9";
|
||||||
allwinner,function = "uart1";
|
allwinner,function = "uart1";
|
||||||
|
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||||
|
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc0_pins_a: mmc0@0 {
|
mmc0_pins_a: mmc0@0 {
|
||||||
|
@ -8,7 +8,6 @@ generic-y += early_ioremap.h
|
|||||||
generic-y += emergency-restart.h
|
generic-y += emergency-restart.h
|
||||||
generic-y += errno.h
|
generic-y += errno.h
|
||||||
generic-y += exec.h
|
generic-y += exec.h
|
||||||
generic-y += export.h
|
|
||||||
generic-y += ioctl.h
|
generic-y += ioctl.h
|
||||||
generic-y += ipcbuf.h
|
generic-y += ipcbuf.h
|
||||||
generic-y += irq_regs.h
|
generic-y += irq_regs.h
|
||||||
|
@ -33,7 +33,7 @@ endif
|
|||||||
obj-$(CONFIG_CPU_IDLE) += cpuidle.o
|
obj-$(CONFIG_CPU_IDLE) += cpuidle.o
|
||||||
obj-$(CONFIG_ISA_DMA_API) += dma.o
|
obj-$(CONFIG_ISA_DMA_API) += dma.o
|
||||||
obj-$(CONFIG_FIQ) += fiq.o fiqasm.o
|
obj-$(CONFIG_FIQ) += fiq.o fiqasm.o
|
||||||
obj-$(CONFIG_MODULES) += module.o
|
obj-$(CONFIG_MODULES) += armksyms.o module.o
|
||||||
obj-$(CONFIG_ARM_MODULE_PLTS) += module-plts.o
|
obj-$(CONFIG_ARM_MODULE_PLTS) += module-plts.o
|
||||||
obj-$(CONFIG_ISA_DMA) += dma-isa.o
|
obj-$(CONFIG_ISA_DMA) += dma-isa.o
|
||||||
obj-$(CONFIG_PCI) += bios32.o isa.o
|
obj-$(CONFIG_PCI) += bios32.o isa.o
|
||||||
|
183
arch/arm/kernel/armksyms.c
Normal file
183
arch/arm/kernel/armksyms.c
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
/*
|
||||||
|
* linux/arch/arm/kernel/armksyms.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2000 Russell King
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*/
|
||||||
|
#include <linux/export.h>
|
||||||
|
#include <linux/sched.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
#include <linux/cryptohash.h>
|
||||||
|
#include <linux/delay.h>
|
||||||
|
#include <linux/in6.h>
|
||||||
|
#include <linux/syscalls.h>
|
||||||
|
#include <linux/uaccess.h>
|
||||||
|
#include <linux/io.h>
|
||||||
|
#include <linux/arm-smccc.h>
|
||||||
|
|
||||||
|
#include <asm/checksum.h>
|
||||||
|
#include <asm/ftrace.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* libgcc functions - functions that are used internally by the
|
||||||
|
* compiler... (prototypes are not correct though, but that
|
||||||
|
* doesn't really matter since they're not versioned).
|
||||||
|
*/
|
||||||
|
extern void __ashldi3(void);
|
||||||
|
extern void __ashrdi3(void);
|
||||||
|
extern void __divsi3(void);
|
||||||
|
extern void __lshrdi3(void);
|
||||||
|
extern void __modsi3(void);
|
||||||
|
extern void __muldi3(void);
|
||||||
|
extern void __ucmpdi2(void);
|
||||||
|
extern void __udivsi3(void);
|
||||||
|
extern void __umodsi3(void);
|
||||||
|
extern void __do_div64(void);
|
||||||
|
extern void __bswapsi2(void);
|
||||||
|
extern void __bswapdi2(void);
|
||||||
|
|
||||||
|
extern void __aeabi_idiv(void);
|
||||||
|
extern void __aeabi_idivmod(void);
|
||||||
|
extern void __aeabi_lasr(void);
|
||||||
|
extern void __aeabi_llsl(void);
|
||||||
|
extern void __aeabi_llsr(void);
|
||||||
|
extern void __aeabi_lmul(void);
|
||||||
|
extern void __aeabi_uidiv(void);
|
||||||
|
extern void __aeabi_uidivmod(void);
|
||||||
|
extern void __aeabi_ulcmp(void);
|
||||||
|
|
||||||
|
extern void fpundefinstr(void);
|
||||||
|
|
||||||
|
void mmioset(void *, unsigned int, size_t);
|
||||||
|
void mmiocpy(void *, const void *, size_t);
|
||||||
|
|
||||||
|
/* platform dependent support */
|
||||||
|
EXPORT_SYMBOL(arm_delay_ops);
|
||||||
|
|
||||||
|
/* networking */
|
||||||
|
EXPORT_SYMBOL(csum_partial);
|
||||||
|
EXPORT_SYMBOL(csum_partial_copy_from_user);
|
||||||
|
EXPORT_SYMBOL(csum_partial_copy_nocheck);
|
||||||
|
EXPORT_SYMBOL(__csum_ipv6_magic);
|
||||||
|
|
||||||
|
/* io */
|
||||||
|
#ifndef __raw_readsb
|
||||||
|
EXPORT_SYMBOL(__raw_readsb);
|
||||||
|
#endif
|
||||||
|
#ifndef __raw_readsw
|
||||||
|
EXPORT_SYMBOL(__raw_readsw);
|
||||||
|
#endif
|
||||||
|
#ifndef __raw_readsl
|
||||||
|
EXPORT_SYMBOL(__raw_readsl);
|
||||||
|
#endif
|
||||||
|
#ifndef __raw_writesb
|
||||||
|
EXPORT_SYMBOL(__raw_writesb);
|
||||||
|
#endif
|
||||||
|
#ifndef __raw_writesw
|
||||||
|
EXPORT_SYMBOL(__raw_writesw);
|
||||||
|
#endif
|
||||||
|
#ifndef __raw_writesl
|
||||||
|
EXPORT_SYMBOL(__raw_writesl);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* string / mem functions */
|
||||||
|
EXPORT_SYMBOL(strchr);
|
||||||
|
EXPORT_SYMBOL(strrchr);
|
||||||
|
EXPORT_SYMBOL(memset);
|
||||||
|
EXPORT_SYMBOL(memcpy);
|
||||||
|
EXPORT_SYMBOL(memmove);
|
||||||
|
EXPORT_SYMBOL(memchr);
|
||||||
|
EXPORT_SYMBOL(__memzero);
|
||||||
|
|
||||||
|
EXPORT_SYMBOL(mmioset);
|
||||||
|
EXPORT_SYMBOL(mmiocpy);
|
||||||
|
|
||||||
|
#ifdef CONFIG_MMU
|
||||||
|
EXPORT_SYMBOL(copy_page);
|
||||||
|
|
||||||
|
EXPORT_SYMBOL(arm_copy_from_user);
|
||||||
|
EXPORT_SYMBOL(arm_copy_to_user);
|
||||||
|
EXPORT_SYMBOL(arm_clear_user);
|
||||||
|
|
||||||
|
EXPORT_SYMBOL(__get_user_1);
|
||||||
|
EXPORT_SYMBOL(__get_user_2);
|
||||||
|
EXPORT_SYMBOL(__get_user_4);
|
||||||
|
EXPORT_SYMBOL(__get_user_8);
|
||||||
|
|
||||||
|
#ifdef __ARMEB__
|
||||||
|
EXPORT_SYMBOL(__get_user_64t_1);
|
||||||
|
EXPORT_SYMBOL(__get_user_64t_2);
|
||||||
|
EXPORT_SYMBOL(__get_user_64t_4);
|
||||||
|
EXPORT_SYMBOL(__get_user_32t_8);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
EXPORT_SYMBOL(__put_user_1);
|
||||||
|
EXPORT_SYMBOL(__put_user_2);
|
||||||
|
EXPORT_SYMBOL(__put_user_4);
|
||||||
|
EXPORT_SYMBOL(__put_user_8);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* gcc lib functions */
|
||||||
|
EXPORT_SYMBOL(__ashldi3);
|
||||||
|
EXPORT_SYMBOL(__ashrdi3);
|
||||||
|
EXPORT_SYMBOL(__divsi3);
|
||||||
|
EXPORT_SYMBOL(__lshrdi3);
|
||||||
|
EXPORT_SYMBOL(__modsi3);
|
||||||
|
EXPORT_SYMBOL(__muldi3);
|
||||||
|
EXPORT_SYMBOL(__ucmpdi2);
|
||||||
|
EXPORT_SYMBOL(__udivsi3);
|
||||||
|
EXPORT_SYMBOL(__umodsi3);
|
||||||
|
EXPORT_SYMBOL(__do_div64);
|
||||||
|
EXPORT_SYMBOL(__bswapsi2);
|
||||||
|
EXPORT_SYMBOL(__bswapdi2);
|
||||||
|
|
||||||
|
#ifdef CONFIG_AEABI
|
||||||
|
EXPORT_SYMBOL(__aeabi_idiv);
|
||||||
|
EXPORT_SYMBOL(__aeabi_idivmod);
|
||||||
|
EXPORT_SYMBOL(__aeabi_lasr);
|
||||||
|
EXPORT_SYMBOL(__aeabi_llsl);
|
||||||
|
EXPORT_SYMBOL(__aeabi_llsr);
|
||||||
|
EXPORT_SYMBOL(__aeabi_lmul);
|
||||||
|
EXPORT_SYMBOL(__aeabi_uidiv);
|
||||||
|
EXPORT_SYMBOL(__aeabi_uidivmod);
|
||||||
|
EXPORT_SYMBOL(__aeabi_ulcmp);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* bitops */
|
||||||
|
EXPORT_SYMBOL(_set_bit);
|
||||||
|
EXPORT_SYMBOL(_test_and_set_bit);
|
||||||
|
EXPORT_SYMBOL(_clear_bit);
|
||||||
|
EXPORT_SYMBOL(_test_and_clear_bit);
|
||||||
|
EXPORT_SYMBOL(_change_bit);
|
||||||
|
EXPORT_SYMBOL(_test_and_change_bit);
|
||||||
|
EXPORT_SYMBOL(_find_first_zero_bit_le);
|
||||||
|
EXPORT_SYMBOL(_find_next_zero_bit_le);
|
||||||
|
EXPORT_SYMBOL(_find_first_bit_le);
|
||||||
|
EXPORT_SYMBOL(_find_next_bit_le);
|
||||||
|
|
||||||
|
#ifdef __ARMEB__
|
||||||
|
EXPORT_SYMBOL(_find_first_zero_bit_be);
|
||||||
|
EXPORT_SYMBOL(_find_next_zero_bit_be);
|
||||||
|
EXPORT_SYMBOL(_find_first_bit_be);
|
||||||
|
EXPORT_SYMBOL(_find_next_bit_be);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_FUNCTION_TRACER
|
||||||
|
#ifdef CONFIG_OLD_MCOUNT
|
||||||
|
EXPORT_SYMBOL(mcount);
|
||||||
|
#endif
|
||||||
|
EXPORT_SYMBOL(__gnu_mcount_nc);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT
|
||||||
|
EXPORT_SYMBOL(__pv_phys_pfn_offset);
|
||||||
|
EXPORT_SYMBOL(__pv_offset);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_HAVE_ARM_SMCCC
|
||||||
|
EXPORT_SYMBOL(arm_smccc_smc);
|
||||||
|
EXPORT_SYMBOL(arm_smccc_hvc);
|
||||||
|
#endif
|
@ -7,7 +7,6 @@
|
|||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/ftrace.h>
|
#include <asm/ftrace.h>
|
||||||
#include <asm/unwind.h>
|
#include <asm/unwind.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
#include "entry-header.S"
|
#include "entry-header.S"
|
||||||
|
|
||||||
@ -154,7 +153,6 @@ ENTRY(mcount)
|
|||||||
__mcount _old
|
__mcount _old
|
||||||
#endif
|
#endif
|
||||||
ENDPROC(mcount)
|
ENDPROC(mcount)
|
||||||
EXPORT_SYMBOL(mcount)
|
|
||||||
|
|
||||||
#ifdef CONFIG_DYNAMIC_FTRACE
|
#ifdef CONFIG_DYNAMIC_FTRACE
|
||||||
ENTRY(ftrace_caller_old)
|
ENTRY(ftrace_caller_old)
|
||||||
@ -207,7 +205,6 @@ UNWIND(.fnstart)
|
|||||||
#endif
|
#endif
|
||||||
UNWIND(.fnend)
|
UNWIND(.fnend)
|
||||||
ENDPROC(__gnu_mcount_nc)
|
ENDPROC(__gnu_mcount_nc)
|
||||||
EXPORT_SYMBOL(__gnu_mcount_nc)
|
|
||||||
|
|
||||||
#ifdef CONFIG_DYNAMIC_FTRACE
|
#ifdef CONFIG_DYNAMIC_FTRACE
|
||||||
ENTRY(ftrace_caller)
|
ENTRY(ftrace_caller)
|
||||||
|
@ -22,7 +22,6 @@
|
|||||||
#include <asm/memory.h>
|
#include <asm/memory.h>
|
||||||
#include <asm/thread_info.h>
|
#include <asm/thread_info.h>
|
||||||
#include <asm/pgtable.h>
|
#include <asm/pgtable.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
#if defined(CONFIG_DEBUG_LL) && !defined(CONFIG_DEBUG_SEMIHOSTING)
|
#if defined(CONFIG_DEBUG_LL) && !defined(CONFIG_DEBUG_SEMIHOSTING)
|
||||||
#include CONFIG_DEBUG_LL_INCLUDE
|
#include CONFIG_DEBUG_LL_INCLUDE
|
||||||
@ -728,8 +727,6 @@ __pv_phys_pfn_offset:
|
|||||||
__pv_offset:
|
__pv_offset:
|
||||||
.quad 0
|
.quad 0
|
||||||
.size __pv_offset, . -__pv_offset
|
.size __pv_offset, . -__pv_offset
|
||||||
EXPORT_SYMBOL(__pv_phys_pfn_offset)
|
|
||||||
EXPORT_SYMBOL(__pv_offset)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "head-common.S"
|
#include "head-common.S"
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
#include <asm/opcodes-sec.h>
|
#include <asm/opcodes-sec.h>
|
||||||
#include <asm/opcodes-virt.h>
|
#include <asm/opcodes-virt.h>
|
||||||
#include <asm/unwind.h>
|
#include <asm/unwind.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Wrap c macros in asm macros to delay expansion until after the
|
* Wrap c macros in asm macros to delay expansion until after the
|
||||||
@ -52,7 +51,6 @@ UNWIND( .fnend)
|
|||||||
ENTRY(arm_smccc_smc)
|
ENTRY(arm_smccc_smc)
|
||||||
SMCCC SMCCC_SMC
|
SMCCC SMCCC_SMC
|
||||||
ENDPROC(arm_smccc_smc)
|
ENDPROC(arm_smccc_smc)
|
||||||
EXPORT_SYMBOL(arm_smccc_smc)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* void smccc_hvc(unsigned long a0, unsigned long a1, unsigned long a2,
|
* void smccc_hvc(unsigned long a0, unsigned long a1, unsigned long a2,
|
||||||
@ -62,4 +60,3 @@ EXPORT_SYMBOL(arm_smccc_smc)
|
|||||||
ENTRY(arm_smccc_hvc)
|
ENTRY(arm_smccc_hvc)
|
||||||
SMCCC SMCCC_HVC
|
SMCCC SMCCC_HVC
|
||||||
ENDPROC(arm_smccc_hvc)
|
ENDPROC(arm_smccc_hvc)
|
||||||
EXPORT_SYMBOL(arm_smccc_hvc)
|
|
||||||
|
@ -74,6 +74,26 @@ void dump_backtrace_entry(unsigned long where, unsigned long from, unsigned long
|
|||||||
dump_mem("", "Exception stack", frame + 4, frame + 4 + sizeof(struct pt_regs));
|
dump_mem("", "Exception stack", frame + 4, frame + 4 + sizeof(struct pt_regs));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dump_backtrace_stm(u32 *stack, u32 instruction)
|
||||||
|
{
|
||||||
|
char str[80], *p;
|
||||||
|
unsigned int x;
|
||||||
|
int reg;
|
||||||
|
|
||||||
|
for (reg = 10, x = 0, p = str; reg >= 0; reg--) {
|
||||||
|
if (instruction & BIT(reg)) {
|
||||||
|
p += sprintf(p, " r%d:%08x", reg, *stack--);
|
||||||
|
if (++x == 6) {
|
||||||
|
x = 0;
|
||||||
|
p = str;
|
||||||
|
printk("%s\n", str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (p != str)
|
||||||
|
printk("%s\n", str);
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef CONFIG_ARM_UNWIND
|
#ifndef CONFIG_ARM_UNWIND
|
||||||
/*
|
/*
|
||||||
* Stack pointers should always be within the kernels view of
|
* Stack pointers should always be within the kernels view of
|
||||||
|
@ -3,6 +3,9 @@
|
|||||||
* Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>
|
* Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* No __ro_after_init data in the .rodata section - which will always be ro */
|
||||||
|
#define RO_AFTER_INIT_DATA
|
||||||
|
|
||||||
#include <asm-generic/vmlinux.lds.h>
|
#include <asm-generic/vmlinux.lds.h>
|
||||||
#include <asm/cache.h>
|
#include <asm/cache.h>
|
||||||
#include <asm/thread_info.h>
|
#include <asm/thread_info.h>
|
||||||
@ -223,6 +226,8 @@ SECTIONS
|
|||||||
. = ALIGN(PAGE_SIZE);
|
. = ALIGN(PAGE_SIZE);
|
||||||
__init_end = .;
|
__init_end = .;
|
||||||
|
|
||||||
|
*(.data..ro_after_init)
|
||||||
|
|
||||||
NOSAVE_DATA
|
NOSAVE_DATA
|
||||||
CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
|
CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
|
||||||
READ_MOSTLY_DATA(L1_CACHE_BYTES)
|
READ_MOSTLY_DATA(L1_CACHE_BYTES)
|
||||||
|
@ -28,7 +28,6 @@ Boston, MA 02110-1301, USA. */
|
|||||||
|
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
#ifdef __ARMEB__
|
#ifdef __ARMEB__
|
||||||
#define al r1
|
#define al r1
|
||||||
@ -53,5 +52,3 @@ ENTRY(__aeabi_llsl)
|
|||||||
|
|
||||||
ENDPROC(__ashldi3)
|
ENDPROC(__ashldi3)
|
||||||
ENDPROC(__aeabi_llsl)
|
ENDPROC(__aeabi_llsl)
|
||||||
EXPORT_SYMBOL(__ashldi3)
|
|
||||||
EXPORT_SYMBOL(__aeabi_llsl)
|
|
||||||
|
@ -28,7 +28,6 @@ Boston, MA 02110-1301, USA. */
|
|||||||
|
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
#ifdef __ARMEB__
|
#ifdef __ARMEB__
|
||||||
#define al r1
|
#define al r1
|
||||||
@ -53,5 +52,3 @@ ENTRY(__aeabi_lasr)
|
|||||||
|
|
||||||
ENDPROC(__ashrdi3)
|
ENDPROC(__ashrdi3)
|
||||||
ENDPROC(__aeabi_lasr)
|
ENDPROC(__aeabi_lasr)
|
||||||
EXPORT_SYMBOL(__ashrdi3)
|
|
||||||
EXPORT_SYMBOL(__aeabi_lasr)
|
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
* 27/03/03 Ian Molton Clean up CONFIG_CPU
|
* 27/03/03 Ian Molton Clean up CONFIG_CPU
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
#include <linux/kern_levels.h>
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
.text
|
.text
|
||||||
@ -83,13 +84,13 @@ for_each_frame: tst frame, mask @ Check for address exceptions
|
|||||||
teq r3, r1, lsr #11
|
teq r3, r1, lsr #11
|
||||||
ldreq r0, [frame, #-8] @ get sp
|
ldreq r0, [frame, #-8] @ get sp
|
||||||
subeq r0, r0, #4 @ point at the last arg
|
subeq r0, r0, #4 @ point at the last arg
|
||||||
bleq .Ldumpstm @ dump saved registers
|
bleq dump_backtrace_stm @ dump saved registers
|
||||||
|
|
||||||
1004: ldr r1, [sv_pc, #0] @ if stmfd sp!, {..., fp, ip, lr, pc}
|
1004: ldr r1, [sv_pc, #0] @ if stmfd sp!, {..., fp, ip, lr, pc}
|
||||||
ldr r3, .Ldsi @ instruction exists,
|
ldr r3, .Ldsi @ instruction exists,
|
||||||
teq r3, r1, lsr #11
|
teq r3, r1, lsr #11
|
||||||
subeq r0, frame, #16
|
subeq r0, frame, #16
|
||||||
bleq .Ldumpstm @ dump saved registers
|
bleq dump_backtrace_stm @ dump saved registers
|
||||||
|
|
||||||
teq sv_fp, #0 @ zero saved fp means
|
teq sv_fp, #0 @ zero saved fp means
|
||||||
beq no_frame @ no further frames
|
beq no_frame @ no further frames
|
||||||
@ -112,38 +113,6 @@ ENDPROC(c_backtrace)
|
|||||||
.long 1004b, 1006b
|
.long 1004b, 1006b
|
||||||
.popsection
|
.popsection
|
||||||
|
|
||||||
#define instr r4
|
|
||||||
#define reg r5
|
|
||||||
#define stack r6
|
|
||||||
|
|
||||||
.Ldumpstm: stmfd sp!, {instr, reg, stack, r7, lr}
|
|
||||||
mov stack, r0
|
|
||||||
mov instr, r1
|
|
||||||
mov reg, #10
|
|
||||||
mov r7, #0
|
|
||||||
1: mov r3, #1
|
|
||||||
ARM( tst instr, r3, lsl reg )
|
|
||||||
THUMB( lsl r3, reg )
|
|
||||||
THUMB( tst instr, r3 )
|
|
||||||
beq 2f
|
|
||||||
add r7, r7, #1
|
|
||||||
teq r7, #6
|
|
||||||
moveq r7, #0
|
|
||||||
adr r3, .Lcr
|
|
||||||
addne r3, r3, #1 @ skip newline
|
|
||||||
ldr r2, [stack], #-4
|
|
||||||
mov r1, reg
|
|
||||||
adr r0, .Lfp
|
|
||||||
bl printk
|
|
||||||
2: subs reg, reg, #1
|
|
||||||
bpl 1b
|
|
||||||
teq r7, #0
|
|
||||||
adrne r0, .Lcr
|
|
||||||
blne printk
|
|
||||||
ldmfd sp!, {instr, reg, stack, r7, pc}
|
|
||||||
|
|
||||||
.Lfp: .asciz " r%d:%08x%s"
|
|
||||||
.Lcr: .asciz "\n"
|
|
||||||
.Lbad: .asciz "Backtrace aborted due to bad frame pointer <%p>\n"
|
.Lbad: .asciz "Backtrace aborted due to bad frame pointer <%p>\n"
|
||||||
.align
|
.align
|
||||||
.Ldsi: .word 0xe92dd800 >> 11 @ stmfd sp!, {... fp, ip, lr, pc}
|
.Ldsi: .word 0xe92dd800 >> 11 @ stmfd sp!, {... fp, ip, lr, pc}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/unwind.h>
|
#include <asm/unwind.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
#if __LINUX_ARM_ARCH__ >= 6
|
#if __LINUX_ARM_ARCH__ >= 6
|
||||||
.macro bitop, name, instr
|
.macro bitop, name, instr
|
||||||
@ -26,7 +25,6 @@ UNWIND( .fnstart )
|
|||||||
bx lr
|
bx lr
|
||||||
UNWIND( .fnend )
|
UNWIND( .fnend )
|
||||||
ENDPROC(\name )
|
ENDPROC(\name )
|
||||||
EXPORT_SYMBOL(\name )
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro testop, name, instr, store
|
.macro testop, name, instr, store
|
||||||
@ -57,7 +55,6 @@ UNWIND( .fnstart )
|
|||||||
2: bx lr
|
2: bx lr
|
||||||
UNWIND( .fnend )
|
UNWIND( .fnend )
|
||||||
ENDPROC(\name )
|
ENDPROC(\name )
|
||||||
EXPORT_SYMBOL(\name )
|
|
||||||
.endm
|
.endm
|
||||||
#else
|
#else
|
||||||
.macro bitop, name, instr
|
.macro bitop, name, instr
|
||||||
@ -77,7 +74,6 @@ UNWIND( .fnstart )
|
|||||||
ret lr
|
ret lr
|
||||||
UNWIND( .fnend )
|
UNWIND( .fnend )
|
||||||
ENDPROC(\name )
|
ENDPROC(\name )
|
||||||
EXPORT_SYMBOL(\name )
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -106,6 +102,5 @@ UNWIND( .fnstart )
|
|||||||
ret lr
|
ret lr
|
||||||
UNWIND( .fnend )
|
UNWIND( .fnend )
|
||||||
ENDPROC(\name )
|
ENDPROC(\name )
|
||||||
EXPORT_SYMBOL(\name )
|
|
||||||
.endm
|
.endm
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
#if __LINUX_ARM_ARCH__ >= 6
|
#if __LINUX_ARM_ARCH__ >= 6
|
||||||
ENTRY(__bswapsi2)
|
ENTRY(__bswapsi2)
|
||||||
@ -36,5 +35,3 @@ ENTRY(__bswapdi2)
|
|||||||
ret lr
|
ret lr
|
||||||
ENDPROC(__bswapdi2)
|
ENDPROC(__bswapdi2)
|
||||||
#endif
|
#endif
|
||||||
EXPORT_SYMBOL(__bswapsi2)
|
|
||||||
EXPORT_SYMBOL(__bswapdi2)
|
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/unwind.h>
|
#include <asm/unwind.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
@ -51,9 +50,6 @@ USER( strnebt r2, [r0])
|
|||||||
UNWIND(.fnend)
|
UNWIND(.fnend)
|
||||||
ENDPROC(arm_clear_user)
|
ENDPROC(arm_clear_user)
|
||||||
ENDPROC(__clear_user_std)
|
ENDPROC(__clear_user_std)
|
||||||
#ifndef CONFIG_UACCESS_WITH_MEMCPY
|
|
||||||
EXPORT_SYMBOL(arm_clear_user)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
.pushsection .text.fixup,"ax"
|
.pushsection .text.fixup,"ax"
|
||||||
.align 0
|
.align 0
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/unwind.h>
|
#include <asm/unwind.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prototype:
|
* Prototype:
|
||||||
@ -95,7 +94,6 @@ ENTRY(arm_copy_from_user)
|
|||||||
#include "copy_template.S"
|
#include "copy_template.S"
|
||||||
|
|
||||||
ENDPROC(arm_copy_from_user)
|
ENDPROC(arm_copy_from_user)
|
||||||
EXPORT_SYMBOL(arm_copy_from_user)
|
|
||||||
|
|
||||||
.pushsection .fixup,"ax"
|
.pushsection .fixup,"ax"
|
||||||
.align 0
|
.align 0
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/asm-offsets.h>
|
#include <asm/asm-offsets.h>
|
||||||
#include <asm/cache.h>
|
#include <asm/cache.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
#define COPY_COUNT (PAGE_SZ / (2 * L1_CACHE_BYTES) PLD( -1 ))
|
#define COPY_COUNT (PAGE_SZ / (2 * L1_CACHE_BYTES) PLD( -1 ))
|
||||||
|
|
||||||
@ -46,4 +45,3 @@ ENTRY(copy_page)
|
|||||||
PLD( beq 2b )
|
PLD( beq 2b )
|
||||||
ldmfd sp!, {r4, pc} @ 3
|
ldmfd sp!, {r4, pc} @ 3
|
||||||
ENDPROC(copy_page)
|
ENDPROC(copy_page)
|
||||||
EXPORT_SYMBOL(copy_page)
|
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/unwind.h>
|
#include <asm/unwind.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prototype:
|
* Prototype:
|
||||||
@ -100,9 +99,6 @@ WEAK(arm_copy_to_user)
|
|||||||
|
|
||||||
ENDPROC(arm_copy_to_user)
|
ENDPROC(arm_copy_to_user)
|
||||||
ENDPROC(__copy_to_user_std)
|
ENDPROC(__copy_to_user_std)
|
||||||
#ifndef CONFIG_UACCESS_WITH_MEMCPY
|
|
||||||
EXPORT_SYMBOL(arm_copy_to_user)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
.pushsection .text.fixup,"ax"
|
.pushsection .text.fixup,"ax"
|
||||||
.align 0
|
.align 0
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
@ -31,4 +30,4 @@ ENTRY(__csum_ipv6_magic)
|
|||||||
adcs r0, r0, #0
|
adcs r0, r0, #0
|
||||||
ldmfd sp!, {pc}
|
ldmfd sp!, {pc}
|
||||||
ENDPROC(__csum_ipv6_magic)
|
ENDPROC(__csum_ipv6_magic)
|
||||||
EXPORT_SYMBOL(__csum_ipv6_magic)
|
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
@ -141,4 +140,3 @@ ENTRY(csum_partial)
|
|||||||
bne 4b
|
bne 4b
|
||||||
b .Lless4
|
b .Lless4
|
||||||
ENDPROC(csum_partial)
|
ENDPROC(csum_partial)
|
||||||
EXPORT_SYMBOL(csum_partial)
|
|
||||||
|
@ -49,6 +49,5 @@
|
|||||||
|
|
||||||
#define FN_ENTRY ENTRY(csum_partial_copy_nocheck)
|
#define FN_ENTRY ENTRY(csum_partial_copy_nocheck)
|
||||||
#define FN_EXIT ENDPROC(csum_partial_copy_nocheck)
|
#define FN_EXIT ENDPROC(csum_partial_copy_nocheck)
|
||||||
#define FN_EXPORT EXPORT_SYMBOL(csum_partial_copy_nocheck)
|
|
||||||
|
|
||||||
#include "csumpartialcopygeneric.S"
|
#include "csumpartialcopygeneric.S"
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation.
|
||||||
*/
|
*/
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* unsigned int
|
* unsigned int
|
||||||
@ -332,4 +331,3 @@ FN_ENTRY
|
|||||||
mov r5, r4, get_byte_1
|
mov r5, r4, get_byte_1
|
||||||
b .Lexit
|
b .Lexit
|
||||||
FN_EXIT
|
FN_EXIT
|
||||||
FN_EXPORT
|
|
||||||
|
@ -73,7 +73,6 @@
|
|||||||
|
|
||||||
#define FN_ENTRY ENTRY(csum_partial_copy_from_user)
|
#define FN_ENTRY ENTRY(csum_partial_copy_from_user)
|
||||||
#define FN_EXIT ENDPROC(csum_partial_copy_from_user)
|
#define FN_EXIT ENDPROC(csum_partial_copy_from_user)
|
||||||
#define FN_EXPORT EXPORT_SYMBOL(csum_partial_copy_from_user)
|
|
||||||
|
|
||||||
#include "csumpartialcopygeneric.S"
|
#include "csumpartialcopygeneric.S"
|
||||||
|
|
||||||
|
@ -24,7 +24,6 @@
|
|||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/export.h>
|
|
||||||
#include <linux/timex.h>
|
#include <linux/timex.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -35,7 +34,6 @@ struct arm_delay_ops arm_delay_ops __ro_after_init = {
|
|||||||
.const_udelay = __loop_const_udelay,
|
.const_udelay = __loop_const_udelay,
|
||||||
.udelay = __loop_udelay,
|
.udelay = __loop_udelay,
|
||||||
};
|
};
|
||||||
EXPORT_SYMBOL(arm_delay_ops);
|
|
||||||
|
|
||||||
static const struct delay_timer *delay_timer;
|
static const struct delay_timer *delay_timer;
|
||||||
static bool delay_calibrated;
|
static bool delay_calibrated;
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/unwind.h>
|
#include <asm/unwind.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
#ifdef __ARMEB__
|
#ifdef __ARMEB__
|
||||||
#define xh r0
|
#define xh r0
|
||||||
@ -211,4 +210,3 @@ Ldiv0_64:
|
|||||||
|
|
||||||
UNWIND(.fnend)
|
UNWIND(.fnend)
|
||||||
ENDPROC(__do_div64)
|
ENDPROC(__do_div64)
|
||||||
EXPORT_SYMBOL(__do_div64)
|
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -38,7 +37,6 @@ ENTRY(_find_first_zero_bit_le)
|
|||||||
3: mov r0, r1 @ no free bits
|
3: mov r0, r1 @ no free bits
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(_find_first_zero_bit_le)
|
ENDPROC(_find_first_zero_bit_le)
|
||||||
EXPORT_SYMBOL(_find_first_zero_bit_le)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Purpose : Find next 'zero' bit
|
* Purpose : Find next 'zero' bit
|
||||||
@ -59,7 +57,6 @@ ENTRY(_find_next_zero_bit_le)
|
|||||||
add r2, r2, #1 @ align bit pointer
|
add r2, r2, #1 @ align bit pointer
|
||||||
b 2b @ loop for next bit
|
b 2b @ loop for next bit
|
||||||
ENDPROC(_find_next_zero_bit_le)
|
ENDPROC(_find_next_zero_bit_le)
|
||||||
EXPORT_SYMBOL(_find_next_zero_bit_le)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Purpose : Find a 'one' bit
|
* Purpose : Find a 'one' bit
|
||||||
@ -81,7 +78,6 @@ ENTRY(_find_first_bit_le)
|
|||||||
3: mov r0, r1 @ no free bits
|
3: mov r0, r1 @ no free bits
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(_find_first_bit_le)
|
ENDPROC(_find_first_bit_le)
|
||||||
EXPORT_SYMBOL(_find_first_bit_le)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Purpose : Find next 'one' bit
|
* Purpose : Find next 'one' bit
|
||||||
@ -101,7 +97,6 @@ ENTRY(_find_next_bit_le)
|
|||||||
add r2, r2, #1 @ align bit pointer
|
add r2, r2, #1 @ align bit pointer
|
||||||
b 2b @ loop for next bit
|
b 2b @ loop for next bit
|
||||||
ENDPROC(_find_next_bit_le)
|
ENDPROC(_find_next_bit_le)
|
||||||
EXPORT_SYMBOL(_find_next_bit_le)
|
|
||||||
|
|
||||||
#ifdef __ARMEB__
|
#ifdef __ARMEB__
|
||||||
|
|
||||||
@ -121,7 +116,6 @@ ENTRY(_find_first_zero_bit_be)
|
|||||||
3: mov r0, r1 @ no free bits
|
3: mov r0, r1 @ no free bits
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(_find_first_zero_bit_be)
|
ENDPROC(_find_first_zero_bit_be)
|
||||||
EXPORT_SYMBOL(_find_first_zero_bit_be)
|
|
||||||
|
|
||||||
ENTRY(_find_next_zero_bit_be)
|
ENTRY(_find_next_zero_bit_be)
|
||||||
teq r1, #0
|
teq r1, #0
|
||||||
@ -139,7 +133,6 @@ ENTRY(_find_next_zero_bit_be)
|
|||||||
add r2, r2, #1 @ align bit pointer
|
add r2, r2, #1 @ align bit pointer
|
||||||
b 2b @ loop for next bit
|
b 2b @ loop for next bit
|
||||||
ENDPROC(_find_next_zero_bit_be)
|
ENDPROC(_find_next_zero_bit_be)
|
||||||
EXPORT_SYMBOL(_find_next_zero_bit_be)
|
|
||||||
|
|
||||||
ENTRY(_find_first_bit_be)
|
ENTRY(_find_first_bit_be)
|
||||||
teq r1, #0
|
teq r1, #0
|
||||||
@ -157,7 +150,6 @@ ENTRY(_find_first_bit_be)
|
|||||||
3: mov r0, r1 @ no free bits
|
3: mov r0, r1 @ no free bits
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(_find_first_bit_be)
|
ENDPROC(_find_first_bit_be)
|
||||||
EXPORT_SYMBOL(_find_first_bit_be)
|
|
||||||
|
|
||||||
ENTRY(_find_next_bit_be)
|
ENTRY(_find_next_bit_be)
|
||||||
teq r1, #0
|
teq r1, #0
|
||||||
@ -174,7 +166,6 @@ ENTRY(_find_next_bit_be)
|
|||||||
add r2, r2, #1 @ align bit pointer
|
add r2, r2, #1 @ align bit pointer
|
||||||
b 2b @ loop for next bit
|
b 2b @ loop for next bit
|
||||||
ENDPROC(_find_next_bit_be)
|
ENDPROC(_find_next_bit_be)
|
||||||
EXPORT_SYMBOL(_find_next_bit_be)
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -31,7 +31,6 @@
|
|||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/errno.h>
|
#include <asm/errno.h>
|
||||||
#include <asm/domain.h>
|
#include <asm/domain.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
ENTRY(__get_user_1)
|
ENTRY(__get_user_1)
|
||||||
check_uaccess r0, 1, r1, r2, __get_user_bad
|
check_uaccess r0, 1, r1, r2, __get_user_bad
|
||||||
@ -39,7 +38,6 @@ ENTRY(__get_user_1)
|
|||||||
mov r0, #0
|
mov r0, #0
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(__get_user_1)
|
ENDPROC(__get_user_1)
|
||||||
EXPORT_SYMBOL(__get_user_1)
|
|
||||||
|
|
||||||
ENTRY(__get_user_2)
|
ENTRY(__get_user_2)
|
||||||
check_uaccess r0, 2, r1, r2, __get_user_bad
|
check_uaccess r0, 2, r1, r2, __get_user_bad
|
||||||
@ -60,7 +58,6 @@ rb .req r0
|
|||||||
mov r0, #0
|
mov r0, #0
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(__get_user_2)
|
ENDPROC(__get_user_2)
|
||||||
EXPORT_SYMBOL(__get_user_2)
|
|
||||||
|
|
||||||
ENTRY(__get_user_4)
|
ENTRY(__get_user_4)
|
||||||
check_uaccess r0, 4, r1, r2, __get_user_bad
|
check_uaccess r0, 4, r1, r2, __get_user_bad
|
||||||
@ -68,7 +65,6 @@ ENTRY(__get_user_4)
|
|||||||
mov r0, #0
|
mov r0, #0
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(__get_user_4)
|
ENDPROC(__get_user_4)
|
||||||
EXPORT_SYMBOL(__get_user_4)
|
|
||||||
|
|
||||||
ENTRY(__get_user_8)
|
ENTRY(__get_user_8)
|
||||||
check_uaccess r0, 8, r1, r2, __get_user_bad
|
check_uaccess r0, 8, r1, r2, __get_user_bad
|
||||||
@ -82,7 +78,6 @@ ENTRY(__get_user_8)
|
|||||||
mov r0, #0
|
mov r0, #0
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(__get_user_8)
|
ENDPROC(__get_user_8)
|
||||||
EXPORT_SYMBOL(__get_user_8)
|
|
||||||
|
|
||||||
#ifdef __ARMEB__
|
#ifdef __ARMEB__
|
||||||
ENTRY(__get_user_32t_8)
|
ENTRY(__get_user_32t_8)
|
||||||
@ -96,7 +91,6 @@ ENTRY(__get_user_32t_8)
|
|||||||
mov r0, #0
|
mov r0, #0
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(__get_user_32t_8)
|
ENDPROC(__get_user_32t_8)
|
||||||
EXPORT_SYMBOL(__get_user_32t_8)
|
|
||||||
|
|
||||||
ENTRY(__get_user_64t_1)
|
ENTRY(__get_user_64t_1)
|
||||||
check_uaccess r0, 1, r1, r2, __get_user_bad8
|
check_uaccess r0, 1, r1, r2, __get_user_bad8
|
||||||
@ -104,7 +98,6 @@ ENTRY(__get_user_64t_1)
|
|||||||
mov r0, #0
|
mov r0, #0
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(__get_user_64t_1)
|
ENDPROC(__get_user_64t_1)
|
||||||
EXPORT_SYMBOL(__get_user_64t_1)
|
|
||||||
|
|
||||||
ENTRY(__get_user_64t_2)
|
ENTRY(__get_user_64t_2)
|
||||||
check_uaccess r0, 2, r1, r2, __get_user_bad8
|
check_uaccess r0, 2, r1, r2, __get_user_bad8
|
||||||
@ -121,7 +114,6 @@ rb .req r0
|
|||||||
mov r0, #0
|
mov r0, #0
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(__get_user_64t_2)
|
ENDPROC(__get_user_64t_2)
|
||||||
EXPORT_SYMBOL(__get_user_64t_2)
|
|
||||||
|
|
||||||
ENTRY(__get_user_64t_4)
|
ENTRY(__get_user_64t_4)
|
||||||
check_uaccess r0, 4, r1, r2, __get_user_bad8
|
check_uaccess r0, 4, r1, r2, __get_user_bad8
|
||||||
@ -129,7 +121,6 @@ ENTRY(__get_user_64t_4)
|
|||||||
mov r0, #0
|
mov r0, #0
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(__get_user_64t_4)
|
ENDPROC(__get_user_64t_4)
|
||||||
EXPORT_SYMBOL(__get_user_64t_4)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__get_user_bad8:
|
__get_user_bad8:
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
.Linsb_align: rsb ip, ip, #4
|
.Linsb_align: rsb ip, ip, #4
|
||||||
cmp ip, r2
|
cmp ip, r2
|
||||||
@ -122,4 +121,3 @@ ENTRY(__raw_readsb)
|
|||||||
|
|
||||||
ldmfd sp!, {r4 - r6, pc}
|
ldmfd sp!, {r4 - r6, pc}
|
||||||
ENDPROC(__raw_readsb)
|
ENDPROC(__raw_readsb)
|
||||||
EXPORT_SYMBOL(__raw_readsb)
|
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
ENTRY(__raw_readsl)
|
ENTRY(__raw_readsl)
|
||||||
teq r2, #0 @ do we have to check for the zero len?
|
teq r2, #0 @ do we have to check for the zero len?
|
||||||
@ -78,4 +77,3 @@ ENTRY(__raw_readsl)
|
|||||||
strb r3, [r1, #0]
|
strb r3, [r1, #0]
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(__raw_readsl)
|
ENDPROC(__raw_readsl)
|
||||||
EXPORT_SYMBOL(__raw_readsl)
|
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
.Linsw_bad_alignment:
|
.Linsw_bad_alignment:
|
||||||
adr r0, .Linsw_bad_align_msg
|
adr r0, .Linsw_bad_align_msg
|
||||||
@ -104,4 +103,4 @@ ENTRY(__raw_readsw)
|
|||||||
|
|
||||||
ldmfd sp!, {r4, r5, r6, pc}
|
ldmfd sp!, {r4, r5, r6, pc}
|
||||||
|
|
||||||
EXPORT_SYMBOL(__raw_readsw)
|
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
.macro pack, rd, hw1, hw2
|
.macro pack, rd, hw1, hw2
|
||||||
#ifndef __ARMEB__
|
#ifndef __ARMEB__
|
||||||
@ -130,4 +129,3 @@ ENTRY(__raw_readsw)
|
|||||||
strneb ip, [r1]
|
strneb ip, [r1]
|
||||||
ldmfd sp!, {r4, pc}
|
ldmfd sp!, {r4, pc}
|
||||||
ENDPROC(__raw_readsw)
|
ENDPROC(__raw_readsw)
|
||||||
EXPORT_SYMBOL(__raw_readsw)
|
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
.macro outword, rd
|
.macro outword, rd
|
||||||
#ifndef __ARMEB__
|
#ifndef __ARMEB__
|
||||||
@ -93,4 +92,3 @@ ENTRY(__raw_writesb)
|
|||||||
|
|
||||||
ldmfd sp!, {r4, r5, pc}
|
ldmfd sp!, {r4, r5, pc}
|
||||||
ENDPROC(__raw_writesb)
|
ENDPROC(__raw_writesb)
|
||||||
EXPORT_SYMBOL(__raw_writesb)
|
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
ENTRY(__raw_writesl)
|
ENTRY(__raw_writesl)
|
||||||
teq r2, #0 @ do we have to check for the zero len?
|
teq r2, #0 @ do we have to check for the zero len?
|
||||||
@ -66,4 +65,3 @@ ENTRY(__raw_writesl)
|
|||||||
bne 6b
|
bne 6b
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(__raw_writesl)
|
ENDPROC(__raw_writesl)
|
||||||
EXPORT_SYMBOL(__raw_writesl)
|
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
.Loutsw_bad_alignment:
|
.Loutsw_bad_alignment:
|
||||||
adr r0, .Loutsw_bad_align_msg
|
adr r0, .Loutsw_bad_align_msg
|
||||||
@ -125,4 +124,3 @@ ENTRY(__raw_writesw)
|
|||||||
strne ip, [r0]
|
strne ip, [r0]
|
||||||
|
|
||||||
ldmfd sp!, {r4, r5, r6, pc}
|
ldmfd sp!, {r4, r5, r6, pc}
|
||||||
EXPORT_SYMBOL(__raw_writesw)
|
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
.macro outword, rd
|
.macro outword, rd
|
||||||
#ifndef __ARMEB__
|
#ifndef __ARMEB__
|
||||||
@ -99,4 +98,3 @@ ENTRY(__raw_writesw)
|
|||||||
strneh ip, [r0]
|
strneh ip, [r0]
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(__raw_writesw)
|
ENDPROC(__raw_writesw)
|
||||||
EXPORT_SYMBOL(__raw_writesw)
|
|
||||||
|
@ -36,7 +36,6 @@ Boston, MA 02111-1307, USA. */
|
|||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/unwind.h>
|
#include <asm/unwind.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
.macro ARM_DIV_BODY dividend, divisor, result, curbit
|
.macro ARM_DIV_BODY dividend, divisor, result, curbit
|
||||||
|
|
||||||
@ -239,8 +238,6 @@ UNWIND(.fnstart)
|
|||||||
UNWIND(.fnend)
|
UNWIND(.fnend)
|
||||||
ENDPROC(__udivsi3)
|
ENDPROC(__udivsi3)
|
||||||
ENDPROC(__aeabi_uidiv)
|
ENDPROC(__aeabi_uidiv)
|
||||||
EXPORT_SYMBOL(__udivsi3)
|
|
||||||
EXPORT_SYMBOL(__aeabi_uidiv)
|
|
||||||
|
|
||||||
ENTRY(__umodsi3)
|
ENTRY(__umodsi3)
|
||||||
UNWIND(.fnstart)
|
UNWIND(.fnstart)
|
||||||
@ -259,7 +256,6 @@ UNWIND(.fnstart)
|
|||||||
|
|
||||||
UNWIND(.fnend)
|
UNWIND(.fnend)
|
||||||
ENDPROC(__umodsi3)
|
ENDPROC(__umodsi3)
|
||||||
EXPORT_SYMBOL(__umodsi3)
|
|
||||||
|
|
||||||
#ifdef CONFIG_ARM_PATCH_IDIV
|
#ifdef CONFIG_ARM_PATCH_IDIV
|
||||||
.align 3
|
.align 3
|
||||||
@ -307,8 +303,6 @@ UNWIND(.fnstart)
|
|||||||
UNWIND(.fnend)
|
UNWIND(.fnend)
|
||||||
ENDPROC(__divsi3)
|
ENDPROC(__divsi3)
|
||||||
ENDPROC(__aeabi_idiv)
|
ENDPROC(__aeabi_idiv)
|
||||||
EXPORT_SYMBOL(__divsi3)
|
|
||||||
EXPORT_SYMBOL(__aeabi_idiv)
|
|
||||||
|
|
||||||
ENTRY(__modsi3)
|
ENTRY(__modsi3)
|
||||||
UNWIND(.fnstart)
|
UNWIND(.fnstart)
|
||||||
@ -333,7 +327,6 @@ UNWIND(.fnstart)
|
|||||||
|
|
||||||
UNWIND(.fnend)
|
UNWIND(.fnend)
|
||||||
ENDPROC(__modsi3)
|
ENDPROC(__modsi3)
|
||||||
EXPORT_SYMBOL(__modsi3)
|
|
||||||
|
|
||||||
#ifdef CONFIG_AEABI
|
#ifdef CONFIG_AEABI
|
||||||
|
|
||||||
@ -350,7 +343,6 @@ UNWIND(.save {r0, r1, ip, lr} )
|
|||||||
|
|
||||||
UNWIND(.fnend)
|
UNWIND(.fnend)
|
||||||
ENDPROC(__aeabi_uidivmod)
|
ENDPROC(__aeabi_uidivmod)
|
||||||
EXPORT_SYMBOL(__aeabi_uidivmod)
|
|
||||||
|
|
||||||
ENTRY(__aeabi_idivmod)
|
ENTRY(__aeabi_idivmod)
|
||||||
UNWIND(.fnstart)
|
UNWIND(.fnstart)
|
||||||
@ -364,7 +356,6 @@ UNWIND(.save {r0, r1, ip, lr} )
|
|||||||
|
|
||||||
UNWIND(.fnend)
|
UNWIND(.fnend)
|
||||||
ENDPROC(__aeabi_idivmod)
|
ENDPROC(__aeabi_idivmod)
|
||||||
EXPORT_SYMBOL(__aeabi_idivmod)
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -28,7 +28,6 @@ Boston, MA 02110-1301, USA. */
|
|||||||
|
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
#ifdef __ARMEB__
|
#ifdef __ARMEB__
|
||||||
#define al r1
|
#define al r1
|
||||||
@ -53,5 +52,3 @@ ENTRY(__aeabi_llsr)
|
|||||||
|
|
||||||
ENDPROC(__lshrdi3)
|
ENDPROC(__lshrdi3)
|
||||||
ENDPROC(__aeabi_llsr)
|
ENDPROC(__aeabi_llsr)
|
||||||
EXPORT_SYMBOL(__lshrdi3)
|
|
||||||
EXPORT_SYMBOL(__aeabi_llsr)
|
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.align 5
|
.align 5
|
||||||
@ -25,4 +24,3 @@ ENTRY(memchr)
|
|||||||
2: movne r0, #0
|
2: movne r0, #0
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(memchr)
|
ENDPROC(memchr)
|
||||||
EXPORT_SYMBOL(memchr)
|
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/unwind.h>
|
#include <asm/unwind.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
#define LDR1W_SHIFT 0
|
#define LDR1W_SHIFT 0
|
||||||
#define STR1W_SHIFT 0
|
#define STR1W_SHIFT 0
|
||||||
@ -69,5 +68,3 @@ ENTRY(memcpy)
|
|||||||
|
|
||||||
ENDPROC(memcpy)
|
ENDPROC(memcpy)
|
||||||
ENDPROC(mmiocpy)
|
ENDPROC(mmiocpy)
|
||||||
EXPORT_SYMBOL(memcpy)
|
|
||||||
EXPORT_SYMBOL(mmiocpy)
|
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/unwind.h>
|
#include <asm/unwind.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
@ -226,4 +225,3 @@ ENTRY(memmove)
|
|||||||
18: backward_copy_shift push=24 pull=8
|
18: backward_copy_shift push=24 pull=8
|
||||||
|
|
||||||
ENDPROC(memmove)
|
ENDPROC(memmove)
|
||||||
EXPORT_SYMBOL(memmove)
|
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/unwind.h>
|
#include <asm/unwind.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.align 5
|
.align 5
|
||||||
@ -136,5 +135,3 @@ UNWIND( .fnstart )
|
|||||||
UNWIND( .fnend )
|
UNWIND( .fnend )
|
||||||
ENDPROC(memset)
|
ENDPROC(memset)
|
||||||
ENDPROC(mmioset)
|
ENDPROC(mmioset)
|
||||||
EXPORT_SYMBOL(memset)
|
|
||||||
EXPORT_SYMBOL(mmioset)
|
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/unwind.h>
|
#include <asm/unwind.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.align 5
|
.align 5
|
||||||
@ -136,4 +135,3 @@ UNWIND( .fnstart )
|
|||||||
ret lr @ 1
|
ret lr @ 1
|
||||||
UNWIND( .fnend )
|
UNWIND( .fnend )
|
||||||
ENDPROC(__memzero)
|
ENDPROC(__memzero)
|
||||||
EXPORT_SYMBOL(__memzero)
|
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
|
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
#ifdef __ARMEB__
|
#ifdef __ARMEB__
|
||||||
#define xh r0
|
#define xh r0
|
||||||
@ -47,5 +46,3 @@ ENTRY(__aeabi_lmul)
|
|||||||
|
|
||||||
ENDPROC(__muldi3)
|
ENDPROC(__muldi3)
|
||||||
ENDPROC(__aeabi_lmul)
|
ENDPROC(__aeabi_lmul)
|
||||||
EXPORT_SYMBOL(__muldi3)
|
|
||||||
EXPORT_SYMBOL(__aeabi_lmul)
|
|
||||||
|
@ -31,7 +31,6 @@
|
|||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/errno.h>
|
#include <asm/errno.h>
|
||||||
#include <asm/domain.h>
|
#include <asm/domain.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
ENTRY(__put_user_1)
|
ENTRY(__put_user_1)
|
||||||
check_uaccess r0, 1, r1, ip, __put_user_bad
|
check_uaccess r0, 1, r1, ip, __put_user_bad
|
||||||
@ -39,7 +38,6 @@ ENTRY(__put_user_1)
|
|||||||
mov r0, #0
|
mov r0, #0
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(__put_user_1)
|
ENDPROC(__put_user_1)
|
||||||
EXPORT_SYMBOL(__put_user_1)
|
|
||||||
|
|
||||||
ENTRY(__put_user_2)
|
ENTRY(__put_user_2)
|
||||||
check_uaccess r0, 2, r1, ip, __put_user_bad
|
check_uaccess r0, 2, r1, ip, __put_user_bad
|
||||||
@ -64,7 +62,6 @@ ENTRY(__put_user_2)
|
|||||||
mov r0, #0
|
mov r0, #0
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(__put_user_2)
|
ENDPROC(__put_user_2)
|
||||||
EXPORT_SYMBOL(__put_user_2)
|
|
||||||
|
|
||||||
ENTRY(__put_user_4)
|
ENTRY(__put_user_4)
|
||||||
check_uaccess r0, 4, r1, ip, __put_user_bad
|
check_uaccess r0, 4, r1, ip, __put_user_bad
|
||||||
@ -72,7 +69,6 @@ ENTRY(__put_user_4)
|
|||||||
mov r0, #0
|
mov r0, #0
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(__put_user_4)
|
ENDPROC(__put_user_4)
|
||||||
EXPORT_SYMBOL(__put_user_4)
|
|
||||||
|
|
||||||
ENTRY(__put_user_8)
|
ENTRY(__put_user_8)
|
||||||
check_uaccess r0, 8, r1, ip, __put_user_bad
|
check_uaccess r0, 8, r1, ip, __put_user_bad
|
||||||
@ -86,7 +82,6 @@ ENTRY(__put_user_8)
|
|||||||
mov r0, #0
|
mov r0, #0
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(__put_user_8)
|
ENDPROC(__put_user_8)
|
||||||
EXPORT_SYMBOL(__put_user_8)
|
|
||||||
|
|
||||||
__put_user_bad:
|
__put_user_bad:
|
||||||
mov r0, #-EFAULT
|
mov r0, #-EFAULT
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.align 5
|
.align 5
|
||||||
@ -26,4 +25,3 @@ ENTRY(strchr)
|
|||||||
subeq r0, r0, #1
|
subeq r0, r0, #1
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(strchr)
|
ENDPROC(strchr)
|
||||||
EXPORT_SYMBOL(strchr)
|
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.align 5
|
.align 5
|
||||||
@ -25,4 +24,3 @@ ENTRY(strrchr)
|
|||||||
mov r0, r3
|
mov r0, r3
|
||||||
ret lr
|
ret lr
|
||||||
ENDPROC(strrchr)
|
ENDPROC(strrchr)
|
||||||
EXPORT_SYMBOL(strrchr)
|
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
#include <linux/gfp.h>
|
#include <linux/gfp.h>
|
||||||
#include <linux/highmem.h>
|
#include <linux/highmem.h>
|
||||||
#include <linux/hugetlb.h>
|
#include <linux/hugetlb.h>
|
||||||
#include <linux/export.h>
|
|
||||||
#include <asm/current.h>
|
#include <asm/current.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
|
|
||||||
@ -157,7 +156,6 @@ arm_copy_to_user(void __user *to, const void *from, unsigned long n)
|
|||||||
}
|
}
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(arm_copy_to_user);
|
|
||||||
|
|
||||||
static unsigned long noinline
|
static unsigned long noinline
|
||||||
__clear_user_memset(void __user *addr, unsigned long n)
|
__clear_user_memset(void __user *addr, unsigned long n)
|
||||||
@ -215,7 +213,6 @@ unsigned long arm_clear_user(void __user *addr, unsigned long n)
|
|||||||
}
|
}
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(arm_clear_user);
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
|
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
#ifdef __ARMEB__
|
#ifdef __ARMEB__
|
||||||
#define xh r0
|
#define xh r0
|
||||||
@ -36,7 +35,6 @@ ENTRY(__ucmpdi2)
|
|||||||
ret lr
|
ret lr
|
||||||
|
|
||||||
ENDPROC(__ucmpdi2)
|
ENDPROC(__ucmpdi2)
|
||||||
EXPORT_SYMBOL(__ucmpdi2)
|
|
||||||
|
|
||||||
#ifdef CONFIG_AEABI
|
#ifdef CONFIG_AEABI
|
||||||
|
|
||||||
@ -50,7 +48,6 @@ ENTRY(__aeabi_ulcmp)
|
|||||||
ret lr
|
ret lr
|
||||||
|
|
||||||
ENDPROC(__aeabi_ulcmp)
|
ENDPROC(__aeabi_ulcmp)
|
||||||
EXPORT_SYMBOL(__aeabi_ulcmp)
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -32,6 +32,7 @@ endif
|
|||||||
|
|
||||||
ifdef CONFIG_SND_IMX_SOC
|
ifdef CONFIG_SND_IMX_SOC
|
||||||
obj-y += ssi-fiq.o
|
obj-y += ssi-fiq.o
|
||||||
|
obj-y += ssi-fiq-ksym.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# i.MX21 based machines
|
# i.MX21 based machines
|
||||||
|
20
arch/arm/mach-imx/ssi-fiq-ksym.c
Normal file
20
arch/arm/mach-imx/ssi-fiq-ksym.c
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Exported ksyms for the SSI FIQ handler
|
||||||
|
*
|
||||||
|
* Copyright (C) 2009, Sascha Hauer <s.hauer@pengutronix.de>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
|
|
||||||
|
#include <linux/platform_data/asoc-imx-ssi.h>
|
||||||
|
|
||||||
|
EXPORT_SYMBOL(imx_ssi_fiq_tx_buffer);
|
||||||
|
EXPORT_SYMBOL(imx_ssi_fiq_rx_buffer);
|
||||||
|
EXPORT_SYMBOL(imx_ssi_fiq_start);
|
||||||
|
EXPORT_SYMBOL(imx_ssi_fiq_end);
|
||||||
|
EXPORT_SYMBOL(imx_ssi_fiq_base);
|
||||||
|
|
@ -8,7 +8,6 @@
|
|||||||
|
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/export.h>
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* r8 = bit 0-15: tx offset, bit 16-31: tx buffer size
|
* r8 = bit 0-15: tx offset, bit 16-31: tx buffer size
|
||||||
@ -145,8 +144,4 @@ imx_ssi_fiq_tx_buffer:
|
|||||||
.word 0x0
|
.word 0x0
|
||||||
.L_imx_ssi_fiq_end:
|
.L_imx_ssi_fiq_end:
|
||||||
imx_ssi_fiq_end:
|
imx_ssi_fiq_end:
|
||||||
EXPORT_SYMBOL(imx_ssi_fiq_tx_buffer)
|
|
||||||
EXPORT_SYMBOL(imx_ssi_fiq_rx_buffer)
|
|
||||||
EXPORT_SYMBOL(imx_ssi_fiq_start)
|
|
||||||
EXPORT_SYMBOL(imx_ssi_fiq_end)
|
|
||||||
EXPORT_SYMBOL(imx_ssi_fiq_base)
|
|
||||||
|
@ -71,6 +71,7 @@ config SOC_AM43XX
|
|||||||
select HAVE_ARM_TWD
|
select HAVE_ARM_TWD
|
||||||
select ARM_ERRATA_754322
|
select ARM_ERRATA_754322
|
||||||
select ARM_ERRATA_775420
|
select ARM_ERRATA_775420
|
||||||
|
select OMAP_INTERCONNECT
|
||||||
|
|
||||||
config SOC_DRA7XX
|
config SOC_DRA7XX
|
||||||
bool "TI DRA7XX"
|
bool "TI DRA7XX"
|
||||||
|
@ -205,11 +205,15 @@ void __init omap2xxx_check_revision(void)
|
|||||||
|
|
||||||
#define OMAP3_SHOW_FEATURE(feat) \
|
#define OMAP3_SHOW_FEATURE(feat) \
|
||||||
if (omap3_has_ ##feat()) \
|
if (omap3_has_ ##feat()) \
|
||||||
printk(#feat" ");
|
n += scnprintf(buf + n, sizeof(buf) - n, #feat " ");
|
||||||
|
|
||||||
static void __init omap3_cpuinfo(void)
|
static void __init omap3_cpuinfo(void)
|
||||||
{
|
{
|
||||||
const char *cpu_name;
|
const char *cpu_name;
|
||||||
|
char buf[64];
|
||||||
|
int n = 0;
|
||||||
|
|
||||||
|
memset(buf, 0, sizeof(buf));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* OMAP3430 and OMAP3530 are assumed to be same.
|
* OMAP3430 and OMAP3530 are assumed to be same.
|
||||||
@ -241,10 +245,10 @@ static void __init omap3_cpuinfo(void)
|
|||||||
cpu_name = "OMAP3503";
|
cpu_name = "OMAP3503";
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(soc_name, "%s", cpu_name);
|
scnprintf(soc_name, sizeof(soc_name), "%s", cpu_name);
|
||||||
|
|
||||||
/* Print verbose information */
|
/* Print verbose information */
|
||||||
pr_info("%s %s (", soc_name, soc_rev);
|
n += scnprintf(buf, sizeof(buf) - n, "%s %s (", soc_name, soc_rev);
|
||||||
|
|
||||||
OMAP3_SHOW_FEATURE(l2cache);
|
OMAP3_SHOW_FEATURE(l2cache);
|
||||||
OMAP3_SHOW_FEATURE(iva);
|
OMAP3_SHOW_FEATURE(iva);
|
||||||
@ -252,8 +256,10 @@ static void __init omap3_cpuinfo(void)
|
|||||||
OMAP3_SHOW_FEATURE(neon);
|
OMAP3_SHOW_FEATURE(neon);
|
||||||
OMAP3_SHOW_FEATURE(isp);
|
OMAP3_SHOW_FEATURE(isp);
|
||||||
OMAP3_SHOW_FEATURE(192mhz_clk);
|
OMAP3_SHOW_FEATURE(192mhz_clk);
|
||||||
|
if (*(buf + n - 1) == ' ')
|
||||||
printk(")\n");
|
n--;
|
||||||
|
n += scnprintf(buf + n, sizeof(buf) - n, ")\n");
|
||||||
|
pr_info("%s", buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define OMAP3_CHECK_FEATURE(status,feat) \
|
#define OMAP3_CHECK_FEATURE(status,feat) \
|
||||||
|
@ -319,6 +319,9 @@ void __init omap3_prm_init_pm(bool has_uart4, bool has_iva)
|
|||||||
if (has_uart4) {
|
if (has_uart4) {
|
||||||
en_uart4_mask = OMAP3630_EN_UART4_MASK;
|
en_uart4_mask = OMAP3630_EN_UART4_MASK;
|
||||||
grpsel_uart4_mask = OMAP3630_GRPSEL_UART4_MASK;
|
grpsel_uart4_mask = OMAP3630_GRPSEL_UART4_MASK;
|
||||||
|
} else {
|
||||||
|
en_uart4_mask = 0;
|
||||||
|
grpsel_uart4_mask = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Enable wakeups in PER */
|
/* Enable wakeups in PER */
|
||||||
|
@ -87,6 +87,12 @@ int voltdm_scale(struct voltagedomain *voltdm,
|
|||||||
return -ENODATA;
|
return -ENODATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!voltdm->volt_data) {
|
||||||
|
pr_err("%s: No voltage data defined for vdd_%s\n",
|
||||||
|
__func__, voltdm->name);
|
||||||
|
return -ENODATA;
|
||||||
|
}
|
||||||
|
|
||||||
/* Adjust voltage to the exact voltage from the OPP table */
|
/* Adjust voltage to the exact voltage from the OPP table */
|
||||||
for (i = 0; voltdm->volt_data[i].volt_nominal != 0; i++) {
|
for (i = 0; voltdm->volt_data[i].volt_nominal != 0; i++) {
|
||||||
if (voltdm->volt_data[i].volt_nominal >= target_volt) {
|
if (voltdm->volt_data[i].volt_nominal >= target_volt) {
|
||||||
|
@ -1167,7 +1167,7 @@ static int __init dma_debug_do_init(void)
|
|||||||
dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES);
|
dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
fs_initcall(dma_debug_do_init);
|
core_initcall(dma_debug_do_init);
|
||||||
|
|
||||||
#ifdef CONFIG_ARM_DMA_USE_IOMMU
|
#ifdef CONFIG_ARM_DMA_USE_IOMMU
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ ENTRY(cpu_cm7_proc_fin)
|
|||||||
ret lr
|
ret lr
|
||||||
ENDPROC(cpu_cm7_proc_fin)
|
ENDPROC(cpu_cm7_proc_fin)
|
||||||
|
|
||||||
.section ".text.init", #alloc, #execinstr
|
.section ".init.text", #alloc, #execinstr
|
||||||
|
|
||||||
__v7m_cm7_setup:
|
__v7m_cm7_setup:
|
||||||
mov r8, #(V7M_SCB_CCR_DC | V7M_SCB_CCR_IC| V7M_SCB_CCR_BP)
|
mov r8, #(V7M_SCB_CCR_DC | V7M_SCB_CCR_IC| V7M_SCB_CCR_BP)
|
||||||
|
@ -393,7 +393,7 @@
|
|||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
dma-coherent;
|
dma-coherent;
|
||||||
ranges = <0x01000000 0x00 0x5f800000 0x00 0x5f800000 0x0 0x00800000>,
|
ranges = <0x01000000 0x00 0x00000000 0x00 0x5f800000 0x0 0x00800000>,
|
||||||
<0x02000000 0x00 0x50000000 0x00 0x50000000 0x0 0x08000000>,
|
<0x02000000 0x00 0x50000000 0x00 0x50000000 0x0 0x08000000>,
|
||||||
<0x42000000 0x40 0x00000000 0x40 0x00000000 0x1 0x00000000>;
|
<0x42000000 0x40 0x00000000 0x40 0x00000000 0x1 0x00000000>;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
|
@ -76,7 +76,7 @@
|
|||||||
compatible = "arm,idle-state";
|
compatible = "arm,idle-state";
|
||||||
arm,psci-suspend-param = <0x1010000>;
|
arm,psci-suspend-param = <0x1010000>;
|
||||||
local-timer-stop;
|
local-timer-stop;
|
||||||
entry-latency-us = <300>;
|
entry-latency-us = <400>;
|
||||||
exit-latency-us = <1200>;
|
exit-latency-us = <1200>;
|
||||||
min-residency-us = <2500>;
|
min-residency-us = <2500>;
|
||||||
};
|
};
|
||||||
|
@ -76,7 +76,7 @@
|
|||||||
compatible = "arm,idle-state";
|
compatible = "arm,idle-state";
|
||||||
arm,psci-suspend-param = <0x1010000>;
|
arm,psci-suspend-param = <0x1010000>;
|
||||||
local-timer-stop;
|
local-timer-stop;
|
||||||
entry-latency-us = <300>;
|
entry-latency-us = <400>;
|
||||||
exit-latency-us = <1200>;
|
exit-latency-us = <1200>;
|
||||||
min-residency-us = <2500>;
|
min-residency-us = <2500>;
|
||||||
};
|
};
|
||||||
|
@ -76,7 +76,7 @@
|
|||||||
compatible = "arm,idle-state";
|
compatible = "arm,idle-state";
|
||||||
arm,psci-suspend-param = <0x1010000>;
|
arm,psci-suspend-param = <0x1010000>;
|
||||||
local-timer-stop;
|
local-timer-stop;
|
||||||
entry-latency-us = <300>;
|
entry-latency-us = <400>;
|
||||||
exit-latency-us = <1200>;
|
exit-latency-us = <1200>;
|
||||||
min-residency-us = <2500>;
|
min-residency-us = <2500>;
|
||||||
};
|
};
|
||||||
|
@ -105,7 +105,7 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
nb_perih_clk: nb-periph-clk@13000{
|
nb_periph_clk: nb-periph-clk@13000 {
|
||||||
compatible = "marvell,armada-3700-periph-clock-nb";
|
compatible = "marvell,armada-3700-periph-clock-nb";
|
||||||
reg = <0x13000 0x100>;
|
reg = <0x13000 0x100>;
|
||||||
clocks = <&tbg 0>, <&tbg 1>, <&tbg 2>,
|
clocks = <&tbg 0>, <&tbg 1>, <&tbg 2>,
|
||||||
@ -113,7 +113,7 @@
|
|||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sb_perih_clk: sb-periph-clk@18000{
|
sb_periph_clk: sb-periph-clk@18000 {
|
||||||
compatible = "marvell,armada-3700-periph-clock-sb";
|
compatible = "marvell,armada-3700-periph-clock-sb";
|
||||||
reg = <0x18000 0x100>;
|
reg = <0x18000 0x100>;
|
||||||
clocks = <&tbg 0>, <&tbg 1>, <&tbg 2>,
|
clocks = <&tbg 0>, <&tbg 1>, <&tbg 2>,
|
||||||
|
@ -130,8 +130,8 @@
|
|||||||
reg = <0x700600 0x50>;
|
reg = <0x700600 0x50>;
|
||||||
#address-cells = <0x1>;
|
#address-cells = <0x1>;
|
||||||
#size-cells = <0x0>;
|
#size-cells = <0x0>;
|
||||||
cell-index = <1>;
|
cell-index = <3>;
|
||||||
clocks = <&cps_syscon0 0 3>;
|
clocks = <&cps_syscon0 1 21>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -140,7 +140,7 @@
|
|||||||
reg = <0x700680 0x50>;
|
reg = <0x700680 0x50>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
cell-index = <2>;
|
cell-index = <4>;
|
||||||
clocks = <&cps_syscon0 1 21>;
|
clocks = <&cps_syscon0 1 21>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
@ -46,7 +46,15 @@
|
|||||||
#define ARMV8_PMU_EVTYPE_MASK 0xc800ffff /* Mask for writable bits */
|
#define ARMV8_PMU_EVTYPE_MASK 0xc800ffff /* Mask for writable bits */
|
||||||
#define ARMV8_PMU_EVTYPE_EVENT 0xffff /* Mask for EVENT bits */
|
#define ARMV8_PMU_EVTYPE_EVENT 0xffff /* Mask for EVENT bits */
|
||||||
|
|
||||||
#define ARMV8_PMU_EVTYPE_EVENT_SW_INCR 0 /* Software increment event */
|
/*
|
||||||
|
* PMUv3 event types: required events
|
||||||
|
*/
|
||||||
|
#define ARMV8_PMUV3_PERFCTR_SW_INCR 0x00
|
||||||
|
#define ARMV8_PMUV3_PERFCTR_L1D_CACHE_REFILL 0x03
|
||||||
|
#define ARMV8_PMUV3_PERFCTR_L1D_CACHE 0x04
|
||||||
|
#define ARMV8_PMUV3_PERFCTR_BR_MIS_PRED 0x10
|
||||||
|
#define ARMV8_PMUV3_PERFCTR_CPU_CYCLES 0x11
|
||||||
|
#define ARMV8_PMUV3_PERFCTR_BR_PRED 0x12
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Event filters for PMUv3
|
* Event filters for PMUv3
|
||||||
|
@ -31,17 +31,9 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* ARMv8 PMUv3 Performance Events handling code.
|
* ARMv8 PMUv3 Performance Events handling code.
|
||||||
* Common event types.
|
* Common event types (some are defined in asm/perf_event.h).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Required events. */
|
|
||||||
#define ARMV8_PMUV3_PERFCTR_SW_INCR 0x00
|
|
||||||
#define ARMV8_PMUV3_PERFCTR_L1D_CACHE_REFILL 0x03
|
|
||||||
#define ARMV8_PMUV3_PERFCTR_L1D_CACHE 0x04
|
|
||||||
#define ARMV8_PMUV3_PERFCTR_BR_MIS_PRED 0x10
|
|
||||||
#define ARMV8_PMUV3_PERFCTR_CPU_CYCLES 0x11
|
|
||||||
#define ARMV8_PMUV3_PERFCTR_BR_PRED 0x12
|
|
||||||
|
|
||||||
/* At least one of the following is required. */
|
/* At least one of the following is required. */
|
||||||
#define ARMV8_PMUV3_PERFCTR_INST_RETIRED 0x08
|
#define ARMV8_PMUV3_PERFCTR_INST_RETIRED 0x08
|
||||||
#define ARMV8_PMUV3_PERFCTR_INST_SPEC 0x1B
|
#define ARMV8_PMUV3_PERFCTR_INST_SPEC 0x1B
|
||||||
|
@ -597,8 +597,14 @@ static bool access_pmu_evcntr(struct kvm_vcpu *vcpu,
|
|||||||
|
|
||||||
idx = ARMV8_PMU_CYCLE_IDX;
|
idx = ARMV8_PMU_CYCLE_IDX;
|
||||||
} else {
|
} else {
|
||||||
BUG();
|
return false;
|
||||||
}
|
}
|
||||||
|
} else if (r->CRn == 0 && r->CRm == 9) {
|
||||||
|
/* PMCCNTR */
|
||||||
|
if (pmu_access_event_counter_el0_disabled(vcpu))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
idx = ARMV8_PMU_CYCLE_IDX;
|
||||||
} else if (r->CRn == 14 && (r->CRm & 12) == 8) {
|
} else if (r->CRn == 14 && (r->CRm & 12) == 8) {
|
||||||
/* PMEVCNTRn_EL0 */
|
/* PMEVCNTRn_EL0 */
|
||||||
if (pmu_access_event_counter_el0_disabled(vcpu))
|
if (pmu_access_event_counter_el0_disabled(vcpu))
|
||||||
@ -606,7 +612,7 @@ static bool access_pmu_evcntr(struct kvm_vcpu *vcpu,
|
|||||||
|
|
||||||
idx = ((r->CRm & 3) << 3) | (r->Op2 & 7);
|
idx = ((r->CRm & 3) << 3) | (r->Op2 & 7);
|
||||||
} else {
|
} else {
|
||||||
BUG();
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pmu_counter_idx_valid(vcpu, idx))
|
if (!pmu_counter_idx_valid(vcpu, idx))
|
||||||
|
@ -214,6 +214,12 @@
|
|||||||
#error Bad page size configuration for hugetlbfs!
|
#error Bad page size configuration for hugetlbfs!
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wired register bits
|
||||||
|
*/
|
||||||
|
#define MIPSR6_WIRED_LIMIT (_ULCAST_(0xffff) << 16)
|
||||||
|
#define MIPSR6_WIRED_WIRED (_ULCAST_(0xffff) << 0)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Values used for computation of new tlb entries
|
* Values used for computation of new tlb entries
|
||||||
*/
|
*/
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
#ifndef __ASM_TLB_H
|
#ifndef __ASM_TLB_H
|
||||||
#define __ASM_TLB_H
|
#define __ASM_TLB_H
|
||||||
|
|
||||||
|
#include <asm/cpu-features.h>
|
||||||
|
#include <asm/mipsregs.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* MIPS doesn't need any special per-pte or per-vma handling, except
|
* MIPS doesn't need any special per-pte or per-vma handling, except
|
||||||
* we need to flush cache for area to be unmapped.
|
* we need to flush cache for area to be unmapped.
|
||||||
@ -22,6 +25,16 @@
|
|||||||
((CKSEG0 + ((idx) << (PAGE_SHIFT + 1))) | \
|
((CKSEG0 + ((idx) << (PAGE_SHIFT + 1))) | \
|
||||||
(cpu_has_tlbinv ? MIPS_ENTRYHI_EHINV : 0))
|
(cpu_has_tlbinv ? MIPS_ENTRYHI_EHINV : 0))
|
||||||
|
|
||||||
|
static inline unsigned int num_wired_entries(void)
|
||||||
|
{
|
||||||
|
unsigned int wired = read_c0_wired();
|
||||||
|
|
||||||
|
if (cpu_has_mips_r6)
|
||||||
|
wired &= MIPSR6_WIRED_WIRED;
|
||||||
|
|
||||||
|
return wired;
|
||||||
|
}
|
||||||
|
|
||||||
#include <asm-generic/tlb.h>
|
#include <asm-generic/tlb.h>
|
||||||
|
|
||||||
#endif /* __ASM_TLB_H */
|
#endif /* __ASM_TLB_H */
|
||||||
|
@ -209,17 +209,18 @@ bad_area_nosemaphore:
|
|||||||
if (show_unhandled_signals &&
|
if (show_unhandled_signals &&
|
||||||
unhandled_signal(tsk, SIGSEGV) &&
|
unhandled_signal(tsk, SIGSEGV) &&
|
||||||
__ratelimit(&ratelimit_state)) {
|
__ratelimit(&ratelimit_state)) {
|
||||||
pr_info("\ndo_page_fault(): sending SIGSEGV to %s for invalid %s %0*lx",
|
pr_info("do_page_fault(): sending SIGSEGV to %s for invalid %s %0*lx\n",
|
||||||
tsk->comm,
|
tsk->comm,
|
||||||
write ? "write access to" : "read access from",
|
write ? "write access to" : "read access from",
|
||||||
field, address);
|
field, address);
|
||||||
pr_info("epc = %0*lx in", field,
|
pr_info("epc = %0*lx in", field,
|
||||||
(unsigned long) regs->cp0_epc);
|
(unsigned long) regs->cp0_epc);
|
||||||
print_vma_addr(" ", regs->cp0_epc);
|
print_vma_addr(KERN_CONT " ", regs->cp0_epc);
|
||||||
|
pr_cont("\n");
|
||||||
pr_info("ra = %0*lx in", field,
|
pr_info("ra = %0*lx in", field,
|
||||||
(unsigned long) regs->regs[31]);
|
(unsigned long) regs->regs[31]);
|
||||||
print_vma_addr(" ", regs->regs[31]);
|
print_vma_addr(KERN_CONT " ", regs->regs[31]);
|
||||||
pr_info("\n");
|
pr_cont("\n");
|
||||||
}
|
}
|
||||||
current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
|
current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
|
||||||
info.si_signo = SIGSEGV;
|
info.si_signo = SIGSEGV;
|
||||||
|
@ -118,7 +118,7 @@ static void *__kmap_pgprot(struct page *page, unsigned long addr, pgprot_t prot)
|
|||||||
writex_c0_entrylo1(entrylo);
|
writex_c0_entrylo1(entrylo);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
tlbidx = read_c0_wired();
|
tlbidx = num_wired_entries();
|
||||||
write_c0_wired(tlbidx + 1);
|
write_c0_wired(tlbidx + 1);
|
||||||
write_c0_index(tlbidx);
|
write_c0_index(tlbidx);
|
||||||
mtc0_tlbw_hazard();
|
mtc0_tlbw_hazard();
|
||||||
@ -147,7 +147,7 @@ void kunmap_coherent(void)
|
|||||||
|
|
||||||
local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
old_ctx = read_c0_entryhi();
|
old_ctx = read_c0_entryhi();
|
||||||
wired = read_c0_wired() - 1;
|
wired = num_wired_entries() - 1;
|
||||||
write_c0_wired(wired);
|
write_c0_wired(wired);
|
||||||
write_c0_index(wired);
|
write_c0_index(wired);
|
||||||
write_c0_entryhi(UNIQUE_ENTRYHI(wired));
|
write_c0_entryhi(UNIQUE_ENTRYHI(wired));
|
||||||
|
@ -65,7 +65,7 @@ void local_flush_tlb_all(void)
|
|||||||
write_c0_entrylo0(0);
|
write_c0_entrylo0(0);
|
||||||
write_c0_entrylo1(0);
|
write_c0_entrylo1(0);
|
||||||
|
|
||||||
entry = read_c0_wired();
|
entry = num_wired_entries();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Blast 'em all away.
|
* Blast 'em all away.
|
||||||
@ -385,7 +385,7 @@ void add_wired_entry(unsigned long entrylo0, unsigned long entrylo1,
|
|||||||
old_ctx = read_c0_entryhi();
|
old_ctx = read_c0_entryhi();
|
||||||
htw_stop();
|
htw_stop();
|
||||||
old_pagemask = read_c0_pagemask();
|
old_pagemask = read_c0_pagemask();
|
||||||
wired = read_c0_wired();
|
wired = num_wired_entries();
|
||||||
write_c0_wired(wired + 1);
|
write_c0_wired(wired + 1);
|
||||||
write_c0_index(wired);
|
write_c0_index(wired);
|
||||||
tlbw_use_hazard(); /* What is the hazard here? */
|
tlbw_use_hazard(); /* What is the hazard here? */
|
||||||
@ -449,7 +449,7 @@ __init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,
|
|||||||
htw_stop();
|
htw_stop();
|
||||||
old_ctx = read_c0_entryhi();
|
old_ctx = read_c0_entryhi();
|
||||||
old_pagemask = read_c0_pagemask();
|
old_pagemask = read_c0_pagemask();
|
||||||
wired = read_c0_wired();
|
wired = num_wired_entries();
|
||||||
if (--temp_tlb_entry < wired) {
|
if (--temp_tlb_entry < wired) {
|
||||||
printk(KERN_WARNING
|
printk(KERN_WARNING
|
||||||
"No TLB space left for add_temporary_entry\n");
|
"No TLB space left for add_temporary_entry\n");
|
||||||
|
@ -34,7 +34,9 @@ config PARISC
|
|||||||
select HAVE_ARCH_HASH
|
select HAVE_ARCH_HASH
|
||||||
select HAVE_ARCH_SECCOMP_FILTER
|
select HAVE_ARCH_SECCOMP_FILTER
|
||||||
select HAVE_ARCH_TRACEHOOK
|
select HAVE_ARCH_TRACEHOOK
|
||||||
select HAVE_UNSTABLE_SCHED_CLOCK if (SMP || !64BIT)
|
select GENERIC_SCHED_CLOCK
|
||||||
|
select HAVE_UNSTABLE_SCHED_CLOCK if SMP
|
||||||
|
select GENERIC_CLOCKEVENTS
|
||||||
select ARCH_NO_COHERENT_DMA_MMAP
|
select ARCH_NO_COHERENT_DMA_MMAP
|
||||||
select CPU_NO_EFFICIENT_FFS
|
select CPU_NO_EFFICIENT_FFS
|
||||||
|
|
||||||
|
@ -369,6 +369,7 @@ void __init parisc_setup_cache_timing(void)
|
|||||||
{
|
{
|
||||||
unsigned long rangetime, alltime;
|
unsigned long rangetime, alltime;
|
||||||
unsigned long size, start;
|
unsigned long size, start;
|
||||||
|
unsigned long threshold;
|
||||||
|
|
||||||
alltime = mfctl(16);
|
alltime = mfctl(16);
|
||||||
flush_data_cache();
|
flush_data_cache();
|
||||||
@ -382,17 +383,12 @@ void __init parisc_setup_cache_timing(void)
|
|||||||
printk(KERN_DEBUG "Whole cache flush %lu cycles, flushing %lu bytes %lu cycles\n",
|
printk(KERN_DEBUG "Whole cache flush %lu cycles, flushing %lu bytes %lu cycles\n",
|
||||||
alltime, size, rangetime);
|
alltime, size, rangetime);
|
||||||
|
|
||||||
/* Racy, but if we see an intermediate value, it's ok too... */
|
threshold = L1_CACHE_ALIGN(size * alltime / rangetime);
|
||||||
parisc_cache_flush_threshold = size * alltime / rangetime;
|
if (threshold > cache_info.dc_size)
|
||||||
|
threshold = cache_info.dc_size;
|
||||||
parisc_cache_flush_threshold = L1_CACHE_ALIGN(parisc_cache_flush_threshold);
|
if (threshold)
|
||||||
if (!parisc_cache_flush_threshold)
|
parisc_cache_flush_threshold = threshold;
|
||||||
parisc_cache_flush_threshold = FLUSH_THRESHOLD;
|
printk(KERN_INFO "Cache flush threshold set to %lu KiB\n",
|
||||||
|
|
||||||
if (parisc_cache_flush_threshold > cache_info.dc_size)
|
|
||||||
parisc_cache_flush_threshold = cache_info.dc_size;
|
|
||||||
|
|
||||||
printk(KERN_INFO "Setting cache flush threshold to %lu kB\n",
|
|
||||||
parisc_cache_flush_threshold/1024);
|
parisc_cache_flush_threshold/1024);
|
||||||
|
|
||||||
/* calculate TLB flush threshold */
|
/* calculate TLB flush threshold */
|
||||||
@ -401,7 +397,7 @@ void __init parisc_setup_cache_timing(void)
|
|||||||
flush_tlb_all();
|
flush_tlb_all();
|
||||||
alltime = mfctl(16) - alltime;
|
alltime = mfctl(16) - alltime;
|
||||||
|
|
||||||
size = PAGE_SIZE;
|
size = 0;
|
||||||
start = (unsigned long) _text;
|
start = (unsigned long) _text;
|
||||||
rangetime = mfctl(16);
|
rangetime = mfctl(16);
|
||||||
while (start < (unsigned long) _end) {
|
while (start < (unsigned long) _end) {
|
||||||
@ -414,13 +410,10 @@ void __init parisc_setup_cache_timing(void)
|
|||||||
printk(KERN_DEBUG "Whole TLB flush %lu cycles, flushing %lu bytes %lu cycles\n",
|
printk(KERN_DEBUG "Whole TLB flush %lu cycles, flushing %lu bytes %lu cycles\n",
|
||||||
alltime, size, rangetime);
|
alltime, size, rangetime);
|
||||||
|
|
||||||
parisc_tlb_flush_threshold = size * alltime / rangetime;
|
threshold = PAGE_ALIGN(num_online_cpus() * size * alltime / rangetime);
|
||||||
parisc_tlb_flush_threshold *= num_online_cpus();
|
if (threshold)
|
||||||
parisc_tlb_flush_threshold = PAGE_ALIGN(parisc_tlb_flush_threshold);
|
parisc_tlb_flush_threshold = threshold;
|
||||||
if (!parisc_tlb_flush_threshold)
|
printk(KERN_INFO "TLB flush threshold set to %lu KiB\n",
|
||||||
parisc_tlb_flush_threshold = FLUSH_TLB_THRESHOLD;
|
|
||||||
|
|
||||||
printk(KERN_INFO "Setting TLB flush threshold to %lu kB\n",
|
|
||||||
parisc_tlb_flush_threshold/1024);
|
parisc_tlb_flush_threshold/1024);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ void __init setup_pdc(void)
|
|||||||
status = pdc_system_map_find_mods(&module_result, &module_path, 0);
|
status = pdc_system_map_find_mods(&module_result, &module_path, 0);
|
||||||
if (status == PDC_OK) {
|
if (status == PDC_OK) {
|
||||||
pdc_type = PDC_TYPE_SYSTEM_MAP;
|
pdc_type = PDC_TYPE_SYSTEM_MAP;
|
||||||
printk("System Map.\n");
|
pr_cont("System Map.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,7 +77,7 @@ void __init setup_pdc(void)
|
|||||||
status = pdc_pat_cell_get_number(&cell_info);
|
status = pdc_pat_cell_get_number(&cell_info);
|
||||||
if (status == PDC_OK) {
|
if (status == PDC_OK) {
|
||||||
pdc_type = PDC_TYPE_PAT;
|
pdc_type = PDC_TYPE_PAT;
|
||||||
printk("64 bit PAT.\n");
|
pr_cont("64 bit PAT.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -97,12 +97,12 @@ void __init setup_pdc(void)
|
|||||||
case 0xC: /* 715/64, at least */
|
case 0xC: /* 715/64, at least */
|
||||||
|
|
||||||
pdc_type = PDC_TYPE_SNAKE;
|
pdc_type = PDC_TYPE_SNAKE;
|
||||||
printk("Snake.\n");
|
pr_cont("Snake.\n");
|
||||||
return;
|
return;
|
||||||
|
|
||||||
default: /* Everything else */
|
default: /* Everything else */
|
||||||
|
|
||||||
printk("Unsupported.\n");
|
pr_cont("Unsupported.\n");
|
||||||
panic("If this is a 64-bit machine, please try a 64-bit kernel.\n");
|
panic("If this is a 64-bit machine, please try a 64-bit kernel.\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -96,7 +96,7 @@ fitmanyloop: /* Loop if LOOP >= 2 */
|
|||||||
|
|
||||||
fitmanymiddle: /* Loop if LOOP >= 2 */
|
fitmanymiddle: /* Loop if LOOP >= 2 */
|
||||||
addib,COND(>) -1, %r31, fitmanymiddle /* Adjusted inner loop decr */
|
addib,COND(>) -1, %r31, fitmanymiddle /* Adjusted inner loop decr */
|
||||||
pitlbe 0(%sr1, %r28)
|
pitlbe %r0(%sr1, %r28)
|
||||||
pitlbe,m %arg1(%sr1, %r28) /* Last pitlbe and addr adjust */
|
pitlbe,m %arg1(%sr1, %r28) /* Last pitlbe and addr adjust */
|
||||||
addib,COND(>) -1, %r29, fitmanymiddle /* Middle loop decr */
|
addib,COND(>) -1, %r29, fitmanymiddle /* Middle loop decr */
|
||||||
copy %arg3, %r31 /* Re-init inner loop count */
|
copy %arg3, %r31 /* Re-init inner loop count */
|
||||||
@ -139,7 +139,7 @@ fdtmanyloop: /* Loop if LOOP >= 2 */
|
|||||||
|
|
||||||
fdtmanymiddle: /* Loop if LOOP >= 2 */
|
fdtmanymiddle: /* Loop if LOOP >= 2 */
|
||||||
addib,COND(>) -1, %r31, fdtmanymiddle /* Adjusted inner loop decr */
|
addib,COND(>) -1, %r31, fdtmanymiddle /* Adjusted inner loop decr */
|
||||||
pdtlbe 0(%sr1, %r28)
|
pdtlbe %r0(%sr1, %r28)
|
||||||
pdtlbe,m %arg1(%sr1, %r28) /* Last pdtlbe and addr adjust */
|
pdtlbe,m %arg1(%sr1, %r28) /* Last pdtlbe and addr adjust */
|
||||||
addib,COND(>) -1, %r29, fdtmanymiddle /* Middle loop decr */
|
addib,COND(>) -1, %r29, fdtmanymiddle /* Middle loop decr */
|
||||||
copy %arg3, %r31 /* Re-init inner loop count */
|
copy %arg3, %r31 /* Re-init inner loop count */
|
||||||
@ -626,12 +626,12 @@ ENTRY_CFI(copy_user_page_asm)
|
|||||||
/* Purge any old translations */
|
/* Purge any old translations */
|
||||||
|
|
||||||
#ifdef CONFIG_PA20
|
#ifdef CONFIG_PA20
|
||||||
pdtlb,l 0(%r28)
|
pdtlb,l %r0(%r28)
|
||||||
pdtlb,l 0(%r29)
|
pdtlb,l %r0(%r29)
|
||||||
#else
|
#else
|
||||||
tlb_lock %r20,%r21,%r22
|
tlb_lock %r20,%r21,%r22
|
||||||
pdtlb 0(%r28)
|
pdtlb %r0(%r28)
|
||||||
pdtlb 0(%r29)
|
pdtlb %r0(%r29)
|
||||||
tlb_unlock %r20,%r21,%r22
|
tlb_unlock %r20,%r21,%r22
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -774,10 +774,10 @@ ENTRY_CFI(clear_user_page_asm)
|
|||||||
/* Purge any old translation */
|
/* Purge any old translation */
|
||||||
|
|
||||||
#ifdef CONFIG_PA20
|
#ifdef CONFIG_PA20
|
||||||
pdtlb,l 0(%r28)
|
pdtlb,l %r0(%r28)
|
||||||
#else
|
#else
|
||||||
tlb_lock %r20,%r21,%r22
|
tlb_lock %r20,%r21,%r22
|
||||||
pdtlb 0(%r28)
|
pdtlb %r0(%r28)
|
||||||
tlb_unlock %r20,%r21,%r22
|
tlb_unlock %r20,%r21,%r22
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -858,10 +858,10 @@ ENTRY_CFI(flush_dcache_page_asm)
|
|||||||
/* Purge any old translation */
|
/* Purge any old translation */
|
||||||
|
|
||||||
#ifdef CONFIG_PA20
|
#ifdef CONFIG_PA20
|
||||||
pdtlb,l 0(%r28)
|
pdtlb,l %r0(%r28)
|
||||||
#else
|
#else
|
||||||
tlb_lock %r20,%r21,%r22
|
tlb_lock %r20,%r21,%r22
|
||||||
pdtlb 0(%r28)
|
pdtlb %r0(%r28)
|
||||||
tlb_unlock %r20,%r21,%r22
|
tlb_unlock %r20,%r21,%r22
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -898,10 +898,10 @@ ENTRY_CFI(flush_dcache_page_asm)
|
|||||||
sync
|
sync
|
||||||
|
|
||||||
#ifdef CONFIG_PA20
|
#ifdef CONFIG_PA20
|
||||||
pdtlb,l 0(%r25)
|
pdtlb,l %r0(%r25)
|
||||||
#else
|
#else
|
||||||
tlb_lock %r20,%r21,%r22
|
tlb_lock %r20,%r21,%r22
|
||||||
pdtlb 0(%r25)
|
pdtlb %r0(%r25)
|
||||||
tlb_unlock %r20,%r21,%r22
|
tlb_unlock %r20,%r21,%r22
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -931,13 +931,18 @@ ENTRY_CFI(flush_icache_page_asm)
|
|||||||
depwi 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */
|
depwi 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Purge any old translation */
|
/* Purge any old translation. Note that the FIC instruction
|
||||||
|
* may use either the instruction or data TLB. Given that we
|
||||||
|
* have a flat address space, it's not clear which TLB will be
|
||||||
|
* used. So, we purge both entries. */
|
||||||
|
|
||||||
#ifdef CONFIG_PA20
|
#ifdef CONFIG_PA20
|
||||||
|
pdtlb,l %r0(%r28)
|
||||||
pitlb,l %r0(%sr4,%r28)
|
pitlb,l %r0(%sr4,%r28)
|
||||||
#else
|
#else
|
||||||
tlb_lock %r20,%r21,%r22
|
tlb_lock %r20,%r21,%r22
|
||||||
pitlb (%sr4,%r28)
|
pdtlb %r0(%r28)
|
||||||
|
pitlb %r0(%sr4,%r28)
|
||||||
tlb_unlock %r20,%r21,%r22
|
tlb_unlock %r20,%r21,%r22
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -976,10 +981,12 @@ ENTRY_CFI(flush_icache_page_asm)
|
|||||||
sync
|
sync
|
||||||
|
|
||||||
#ifdef CONFIG_PA20
|
#ifdef CONFIG_PA20
|
||||||
|
pdtlb,l %r0(%r28)
|
||||||
pitlb,l %r0(%sr4,%r25)
|
pitlb,l %r0(%sr4,%r25)
|
||||||
#else
|
#else
|
||||||
tlb_lock %r20,%r21,%r22
|
tlb_lock %r20,%r21,%r22
|
||||||
pitlb (%sr4,%r25)
|
pdtlb %r0(%r28)
|
||||||
|
pitlb %r0(%sr4,%r25)
|
||||||
tlb_unlock %r20,%r21,%r22
|
tlb_unlock %r20,%r21,%r22
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -95,8 +95,8 @@ static inline int map_pte_uncached(pte_t * pte,
|
|||||||
|
|
||||||
if (!pte_none(*pte))
|
if (!pte_none(*pte))
|
||||||
printk(KERN_ERR "map_pte_uncached: page already exists\n");
|
printk(KERN_ERR "map_pte_uncached: page already exists\n");
|
||||||
set_pte(pte, __mk_pte(*paddr_ptr, PAGE_KERNEL_UNC));
|
|
||||||
purge_tlb_start(flags);
|
purge_tlb_start(flags);
|
||||||
|
set_pte(pte, __mk_pte(*paddr_ptr, PAGE_KERNEL_UNC));
|
||||||
pdtlb_kernel(orig_vaddr);
|
pdtlb_kernel(orig_vaddr);
|
||||||
purge_tlb_end(flags);
|
purge_tlb_end(flags);
|
||||||
vaddr += PAGE_SIZE;
|
vaddr += PAGE_SIZE;
|
||||||
|
@ -334,6 +334,10 @@ static int __init parisc_init(void)
|
|||||||
/* tell PDC we're Linux. Nevermind failure. */
|
/* tell PDC we're Linux. Nevermind failure. */
|
||||||
pdc_stable_write(0x40, &osid, sizeof(osid));
|
pdc_stable_write(0x40, &osid, sizeof(osid));
|
||||||
|
|
||||||
|
/* start with known state */
|
||||||
|
flush_cache_all_local();
|
||||||
|
flush_tlb_all_local(NULL);
|
||||||
|
|
||||||
processor_init();
|
processor_init();
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
pr_info("CPU(s): %d out of %d %s at %d.%06d MHz online\n",
|
pr_info("CPU(s): %d out of %d %s at %d.%06d MHz online\n",
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/rtc.h>
|
#include <linux/rtc.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
|
#include <linux/sched_clock.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/param.h>
|
#include <linux/param.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
@ -39,18 +40,6 @@
|
|||||||
|
|
||||||
static unsigned long clocktick __read_mostly; /* timer cycles per tick */
|
static unsigned long clocktick __read_mostly; /* timer cycles per tick */
|
||||||
|
|
||||||
#ifndef CONFIG_64BIT
|
|
||||||
/*
|
|
||||||
* The processor-internal cycle counter (Control Register 16) is used as time
|
|
||||||
* source for the sched_clock() function. This register is 64bit wide on a
|
|
||||||
* 64-bit kernel and 32bit on a 32-bit kernel. Since sched_clock() always
|
|
||||||
* requires a 64bit counter we emulate on the 32-bit kernel the higher 32bits
|
|
||||||
* with a per-cpu variable which we increase every time the counter
|
|
||||||
* wraps-around (which happens every ~4 secounds).
|
|
||||||
*/
|
|
||||||
static DEFINE_PER_CPU(unsigned long, cr16_high_32_bits);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We keep time on PA-RISC Linux by using the Interval Timer which is
|
* We keep time on PA-RISC Linux by using the Interval Timer which is
|
||||||
* a pair of registers; one is read-only and one is write-only; both
|
* a pair of registers; one is read-only and one is write-only; both
|
||||||
@ -121,12 +110,6 @@ irqreturn_t __irq_entry timer_interrupt(int irq, void *dev_id)
|
|||||||
*/
|
*/
|
||||||
mtctl(next_tick, 16);
|
mtctl(next_tick, 16);
|
||||||
|
|
||||||
#if !defined(CONFIG_64BIT)
|
|
||||||
/* check for overflow on a 32bit kernel (every ~4 seconds). */
|
|
||||||
if (unlikely(next_tick < now))
|
|
||||||
this_cpu_inc(cr16_high_32_bits);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Skip one clocktick on purpose if we missed next_tick.
|
/* Skip one clocktick on purpose if we missed next_tick.
|
||||||
* The new CR16 must be "later" than current CR16 otherwise
|
* The new CR16 must be "later" than current CR16 otherwise
|
||||||
* itimer would not fire until CR16 wrapped - e.g 4 seconds
|
* itimer would not fire until CR16 wrapped - e.g 4 seconds
|
||||||
@ -208,7 +191,7 @@ EXPORT_SYMBOL(profile_pc);
|
|||||||
|
|
||||||
/* clock source code */
|
/* clock source code */
|
||||||
|
|
||||||
static cycle_t read_cr16(struct clocksource *cs)
|
static cycle_t notrace read_cr16(struct clocksource *cs)
|
||||||
{
|
{
|
||||||
return get_cycles();
|
return get_cycles();
|
||||||
}
|
}
|
||||||
@ -287,26 +270,9 @@ void read_persistent_clock(struct timespec *ts)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
static u64 notrace read_cr16_sched_clock(void)
|
||||||
* sched_clock() framework
|
|
||||||
*/
|
|
||||||
|
|
||||||
static u32 cyc2ns_mul __read_mostly;
|
|
||||||
static u32 cyc2ns_shift __read_mostly;
|
|
||||||
|
|
||||||
u64 sched_clock(void)
|
|
||||||
{
|
{
|
||||||
u64 now;
|
return get_cycles();
|
||||||
|
|
||||||
/* Get current cycle counter (Control Register 16). */
|
|
||||||
#ifdef CONFIG_64BIT
|
|
||||||
now = mfctl(16);
|
|
||||||
#else
|
|
||||||
now = mfctl(16) + (((u64) this_cpu_read(cr16_high_32_bits)) << 32);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* return the value in ns (cycles_2_ns) */
|
|
||||||
return mul_u64_u32_shr(now, cyc2ns_mul, cyc2ns_shift);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -316,17 +282,16 @@ u64 sched_clock(void)
|
|||||||
|
|
||||||
void __init time_init(void)
|
void __init time_init(void)
|
||||||
{
|
{
|
||||||
unsigned long current_cr16_khz;
|
unsigned long cr16_hz;
|
||||||
|
|
||||||
current_cr16_khz = PAGE0->mem_10msec/10; /* kHz */
|
|
||||||
clocktick = (100 * PAGE0->mem_10msec) / HZ;
|
clocktick = (100 * PAGE0->mem_10msec) / HZ;
|
||||||
|
|
||||||
/* calculate mult/shift values for cr16 */
|
|
||||||
clocks_calc_mult_shift(&cyc2ns_mul, &cyc2ns_shift, current_cr16_khz,
|
|
||||||
NSEC_PER_MSEC, 0);
|
|
||||||
|
|
||||||
start_cpu_itimer(); /* get CPU 0 started */
|
start_cpu_itimer(); /* get CPU 0 started */
|
||||||
|
|
||||||
|
cr16_hz = 100 * PAGE0->mem_10msec; /* Hz */
|
||||||
|
|
||||||
/* register at clocksource framework */
|
/* register at clocksource framework */
|
||||||
clocksource_register_khz(&clocksource_cr16, current_cr16_khz);
|
clocksource_register_hz(&clocksource_cr16, cr16_hz);
|
||||||
|
|
||||||
|
/* register as sched_clock source */
|
||||||
|
sched_clock_register(read_cr16_sched_clock, BITS_PER_LONG, cr16_hz);
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user