mirror of
https://github.com/torvalds/linux.git
synced 2024-12-03 17:41:22 +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
|
||||
----------
|
||||
|
||||
M: Matt Mackal
|
||||
N: Matt Mackal
|
||||
E: mpm@selenic.com
|
||||
D: SLOB slab allocator
|
||||
|
||||
@ -1910,7 +1910,7 @@ S: Ra'annana, Israel
|
||||
|
||||
N: Andi Kleen
|
||||
E: andi@firstfloor.org
|
||||
U: http://www.halobates.de
|
||||
W: http://www.halobates.de
|
||||
D: network, x86, NUMA, various hacks
|
||||
S: Schwalbenstr. 96
|
||||
S: 85551 Ottobrunn
|
||||
@ -2089,8 +2089,8 @@ D: ST Microelectronics SPEAr13xx PCI host bridge driver
|
||||
D: Synopsys Designware PCI host bridge driver
|
||||
|
||||
N: Gabor Kuti
|
||||
M: seasons@falcon.sch.bme.hu
|
||||
M: seasons@makosteszta.sote.hu
|
||||
E: seasons@falcon.sch.bme.hu
|
||||
E: seasons@makosteszta.sote.hu
|
||||
D: Original author of software suspend
|
||||
|
||||
N: Jaroslav Kysela
|
||||
|
@ -6,7 +6,7 @@ perform in-band IPMI communication with their host.
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible : should be "aspeed,ast2400-bt-bmc"
|
||||
- compatible : should be "aspeed,ast2400-ibt-bmc"
|
||||
- reg: physical address and size of the registers
|
||||
|
||||
Optional properties:
|
||||
@ -17,7 +17,7 @@ Optional properties:
|
||||
Example:
|
||||
|
||||
ibt@1e789140 {
|
||||
compatible = "aspeed,ast2400-bt-bmc";
|
||||
compatible = "aspeed,ast2400-ibt-bmc";
|
||||
reg = <0x1e789140 0x18>;
|
||||
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-frame-size: number, maximum transfer unit (IEEE defined MTU), rather than
|
||||
the maximum frame size (there's contradiction in ePAPR).
|
||||
- phy-mode: string, operation mode of the PHY interface; supported values are
|
||||
"mii", "gmii", "sgmii", "qsgmii", "tbi", "rev-mii", "rmii", "rgmii", "rgmii-id",
|
||||
"rgmii-rxid", "rgmii-txid", "rtbi", "smii", "xgmii", "trgmii"; this is now a
|
||||
de-facto standard property;
|
||||
- phy-mode: string, operation mode of the PHY interface. This is now a de-facto
|
||||
standard property; supported values are:
|
||||
* "mii"
|
||||
* "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-handle: phandle, specifies a reference to a node representing a PHY
|
||||
device; this property is described in ePAPR and so preferred;
|
||||
|
@ -12,7 +12,7 @@ Required properties:
|
||||
|
||||
Optional properties:
|
||||
- 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.
|
||||
|
||||
Available audio endpoints for the audio-routing table:
|
||||
|
@ -326,7 +326,7 @@ Two parent-locked sibling muxes
|
||||
|
||||
This is a good topology.
|
||||
|
||||
.--------.
|
||||
.--------.
|
||||
.----------. .--| dev D1 |
|
||||
| parent- |--' '--------'
|
||||
.--| locked | .--------.
|
||||
@ -350,7 +350,7 @@ Mux-locked and parent-locked sibling muxes
|
||||
|
||||
This is a good topology.
|
||||
|
||||
.--------.
|
||||
.--------.
|
||||
.----------. .--| dev D1 |
|
||||
| mux- |--' '--------'
|
||||
.--| locked | .--------.
|
||||
|
@ -67,13 +67,14 @@ Note that DSA does not currently create network interfaces for the "cpu" and
|
||||
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:
|
||||
|
||||
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_edsa.c: Marvell's enhanced DSA 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
|
||||
all contain something which:
|
||||
|
@ -62,10 +62,13 @@ nf_conntrack_generic_timeout - INTEGER (seconds)
|
||||
protocols.
|
||||
|
||||
nf_conntrack_helper - BOOLEAN
|
||||
0 - disabled
|
||||
not 0 - enabled (default)
|
||||
0 - disabled (default)
|
||||
not 0 - enabled
|
||||
|
||||
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)
|
||||
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
|
||||
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 {
|
||||
__u64 clock; /* kvmclock current value */
|
||||
__u32 flags;
|
||||
|
25
MAINTAINERS
25
MAINTAINERS
@ -77,6 +77,7 @@ Descriptions of section entries:
|
||||
Q: Patchwork web based patch tracking system site
|
||||
T: SCM tree type and location.
|
||||
Type is one of: git, hg, quilt, stgit, topgit
|
||||
B: Bug tracking system location.
|
||||
S: Status, one of the following:
|
||||
Supported: Someone is actually paid to look after this.
|
||||
Maintained: Someone actually looks after it.
|
||||
@ -281,6 +282,7 @@ L: linux-acpi@vger.kernel.org
|
||||
W: https://01.org/linux-acpi
|
||||
Q: https://patchwork.kernel.org/project/linux-acpi/list/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
|
||||
B: https://bugzilla.kernel.org
|
||||
S: Supported
|
||||
F: drivers/acpi/
|
||||
F: drivers/pnp/pnpacpi/
|
||||
@ -304,6 +306,8 @@ W: https://acpica.org/
|
||||
W: https://github.com/acpica/acpica/
|
||||
Q: https://patchwork.kernel.org/project/linux-acpi/list/
|
||||
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
|
||||
F: drivers/acpi/acpica/
|
||||
F: include/acpi/
|
||||
@ -313,6 +317,7 @@ ACPI FAN DRIVER
|
||||
M: Zhang Rui <rui.zhang@intel.com>
|
||||
L: linux-acpi@vger.kernel.org
|
||||
W: https://01.org/linux-acpi
|
||||
B: https://bugzilla.kernel.org
|
||||
S: Supported
|
||||
F: drivers/acpi/fan.c
|
||||
|
||||
@ -328,6 +333,7 @@ ACPI THERMAL DRIVER
|
||||
M: Zhang Rui <rui.zhang@intel.com>
|
||||
L: linux-acpi@vger.kernel.org
|
||||
W: https://01.org/linux-acpi
|
||||
B: https://bugzilla.kernel.org
|
||||
S: Supported
|
||||
F: drivers/acpi/*thermal*
|
||||
|
||||
@ -335,6 +341,7 @@ ACPI VIDEO DRIVER
|
||||
M: Zhang Rui <rui.zhang@intel.com>
|
||||
L: linux-acpi@vger.kernel.org
|
||||
W: https://01.org/linux-acpi
|
||||
B: https://bugzilla.kernel.org
|
||||
S: Supported
|
||||
F: drivers/acpi/acpi_video.c
|
||||
|
||||
@ -5701,6 +5708,7 @@ HIBERNATION (aka Software Suspend, aka swsusp)
|
||||
M: "Rafael J. Wysocki" <rjw@rjwysocki.net>
|
||||
M: Pavel Machek <pavel@ucw.cz>
|
||||
L: linux-pm@vger.kernel.org
|
||||
B: https://bugzilla.kernel.org
|
||||
S: Supported
|
||||
F: arch/x86/power/
|
||||
F: drivers/base/power/
|
||||
@ -7122,6 +7130,7 @@ F: drivers/scsi/53c700*
|
||||
LED SUBSYSTEM
|
||||
M: Richard Purdie <rpurdie@rpsys.net>
|
||||
M: Jacek Anaszewski <j.anaszewski@samsung.com>
|
||||
M: Pavel Machek <pavel@ucw.cz>
|
||||
L: linux-leds@vger.kernel.org
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds.git
|
||||
S: Maintained
|
||||
@ -8095,6 +8104,7 @@ F: drivers/infiniband/hw/mlx4/
|
||||
F: include/linux/mlx4/
|
||||
|
||||
MELLANOX MLX5 core VPI driver
|
||||
M: Saeed Mahameed <saeedm@mellanox.com>
|
||||
M: Matan Barak <matanb@mellanox.com>
|
||||
M: Leon Romanovsky <leonro@mellanox.com>
|
||||
L: netdev@vger.kernel.org
|
||||
@ -9285,11 +9295,12 @@ S: Maintained
|
||||
F: drivers/pci/host/*layerscape*
|
||||
|
||||
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>
|
||||
L: linux-pci@vger.kernel.org
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt
|
||||
F: drivers/pci/host/*imx6*
|
||||
|
||||
PCI DRIVER FOR TI KEYSTONE
|
||||
@ -9348,17 +9359,11 @@ F: drivers/pci/host/pci-exynos.c
|
||||
|
||||
PCI DRIVER FOR SYNOPSIS DESIGNWARE
|
||||
M: Jingoo Han <jingoohan1@gmail.com>
|
||||
M: Pratyush Anand <pratyush.anand@gmail.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>
|
||||
M: Joao Pinto <Joao.Pinto@synopsys.com>
|
||||
L: linux-pci@vger.kernel.org
|
||||
S: Maintained
|
||||
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
|
||||
M: Will Deacon <will.deacon@arm.com>
|
||||
@ -9660,6 +9665,7 @@ POWER MANAGEMENT CORE
|
||||
M: "Rafael J. Wysocki" <rjw@rjwysocki.net>
|
||||
L: linux-pm@vger.kernel.org
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
|
||||
B: https://bugzilla.kernel.org
|
||||
S: Supported
|
||||
F: drivers/base/power/
|
||||
F: include/linux/pm.h
|
||||
@ -11649,6 +11655,7 @@ M: "Rafael J. Wysocki" <rjw@rjwysocki.net>
|
||||
M: Len Brown <len.brown@intel.com>
|
||||
M: Pavel Machek <pavel@ucw.cz>
|
||||
L: linux-pm@vger.kernel.org
|
||||
B: https://bugzilla.kernel.org
|
||||
S: Supported
|
||||
F: Documentation/power/
|
||||
F: arch/x86/kernel/acpi/
|
||||
|
18
Makefile
18
Makefile
@ -1,7 +1,7 @@
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 9
|
||||
SUBLEVEL = 0
|
||||
EXTRAVERSION = -rc5
|
||||
EXTRAVERSION = -rc8
|
||||
NAME = Psychotic Stoned Sheep
|
||||
|
||||
# *DOCUMENTATION*
|
||||
@ -399,11 +399,12 @@ KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
|
||||
-fno-strict-aliasing -fno-common \
|
||||
-Werror-implicit-function-declaration \
|
||||
-Wno-format-security \
|
||||
-std=gnu89
|
||||
-std=gnu89 $(call cc-option,-fno-PIE)
|
||||
|
||||
|
||||
KBUILD_AFLAGS_KERNEL :=
|
||||
KBUILD_CFLAGS_KERNEL :=
|
||||
KBUILD_AFLAGS := -D__ASSEMBLY__
|
||||
KBUILD_AFLAGS := -D__ASSEMBLY__ $(call cc-option,-fno-PIE)
|
||||
KBUILD_AFLAGS_MODULE := -DMODULE
|
||||
KBUILD_CFLAGS_MODULE := -DMODULE
|
||||
KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
|
||||
@ -606,6 +607,13 @@ else
|
||||
include/config/auto.conf: ;
|
||||
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
|
||||
# command line.
|
||||
# This allow a user to issue only 'make' to build a kernel including modules
|
||||
@ -943,7 +951,7 @@ ifdef CONFIG_GDB_SCRIPTS
|
||||
endif
|
||||
ifdef CONFIG_TRIM_UNUSED_KSYMS
|
||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
|
||||
"$(MAKE) KBUILD_MODULES=1 -f $(srctree)/Makefile vmlinux_prereq"
|
||||
"$(MAKE) -f $(srctree)/Makefile vmlinux"
|
||||
endif
|
||||
|
||||
# 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 \
|
||||
include/config/auto.conf
|
||||
$(cmd_crmodverdir)
|
||||
$(Q)test -e include/generated/autoksyms.h || \
|
||||
touch include/generated/autoksyms.h
|
||||
|
||||
archprepare: archheaders archscripts prepare1 scripts_basic
|
||||
|
||||
|
@ -22,10 +22,11 @@
|
||||
static inline void __delay(unsigned long loops)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
" lp 1f \n"
|
||||
" nop \n"
|
||||
"1: \n"
|
||||
: "+l"(loops));
|
||||
" mov lp_count, %0 \n"
|
||||
" lp 1f \n"
|
||||
" nop \n"
|
||||
"1: \n"
|
||||
: : "r"(loops));
|
||||
}
|
||||
|
||||
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 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*/
|
||||
#define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT)
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
static int l2_line_sz;
|
||||
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_end = 0xFFFFFFFF; /* legacy value */
|
||||
|
||||
|
@ -745,7 +745,6 @@ dtb-$(CONFIG_MACH_SUN4I) += \
|
||||
sun4i-a10-pcduino2.dtb \
|
||||
sun4i-a10-pov-protab2-ips9.dtb
|
||||
dtb-$(CONFIG_MACH_SUN5I) += \
|
||||
ntc-gr8-evb.dtb \
|
||||
sun5i-a10s-auxtek-t003.dtb \
|
||||
sun5i-a10s-auxtek-t004.dtb \
|
||||
sun5i-a10s-mk802.dtb \
|
||||
@ -761,6 +760,7 @@ dtb-$(CONFIG_MACH_SUN5I) += \
|
||||
sun5i-a13-olinuxino-micro.dtb \
|
||||
sun5i-a13-q8-tablet.dtb \
|
||||
sun5i-a13-utoo-p66.dtb \
|
||||
sun5i-gr8-evb.dtb \
|
||||
sun5i-r8-chip.dtb
|
||||
dtb-$(CONFIG_MACH_SUN6I) += \
|
||||
sun6i-a31-app4-evb1.dtb \
|
||||
|
@ -64,8 +64,8 @@
|
||||
};
|
||||
|
||||
ldo3_reg: ldo3 {
|
||||
regulator-min-microvolt = <600000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-min-microvolt = <1725000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
@ -76,8 +76,8 @@
|
||||
};
|
||||
|
||||
ldo5_reg: ldo5 {
|
||||
regulator-min-microvolt = <1725000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3600000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
@ -100,14 +100,14 @@
|
||||
};
|
||||
|
||||
ldo9_reg: ldo9 {
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-min-microvolt = <1250000>;
|
||||
regulator-max-microvolt = <3600000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo10_reg: ldo10 {
|
||||
regulator-min-microvolt = <1250000>;
|
||||
regulator-max-microvolt = <3650000>;
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3600000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
|
@ -13,6 +13,11 @@
|
||||
};
|
||||
};
|
||||
|
||||
memory@80000000 {
|
||||
device_type = "memory";
|
||||
reg = <0x80000000 0>;
|
||||
};
|
||||
|
||||
wl12xx_vmmc: wl12xx_vmmc {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vwl1271";
|
||||
|
@ -13,9 +13,9 @@
|
||||
};
|
||||
};
|
||||
|
||||
memory@0 {
|
||||
memory@80000000 {
|
||||
device_type = "memory";
|
||||
reg = <0 0>;
|
||||
reg = <0x80000000 0>;
|
||||
};
|
||||
|
||||
leds {
|
||||
|
@ -124,6 +124,7 @@
|
||||
compatible = "ti,abe-twl6040";
|
||||
ti,model = "omap5-uevm";
|
||||
|
||||
ti,jack-detection;
|
||||
ti,mclk-freq = <19200000>;
|
||||
|
||||
ti,mcpdm = <&mcpdm>;
|
||||
@ -415,7 +416,7 @@
|
||||
ti,backup-battery-charge-high-current;
|
||||
};
|
||||
|
||||
gpadc {
|
||||
gpadc: gpadc {
|
||||
compatible = "ti,palmas-gpadc";
|
||||
interrupts = <18 0
|
||||
16 0
|
||||
@ -475,8 +476,8 @@
|
||||
smps6_reg: smps6 {
|
||||
/* VDD_DDR3 - over VDD_SMPS6 */
|
||||
regulator-name = "smps6";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
regulator-min-microvolt = <1350000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
@ -283,6 +283,8 @@
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c0_default>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
@ -296,6 +298,8 @@
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c1_default>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
@ -309,6 +313,8 @@
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c2_default>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
@ -322,6 +328,8 @@
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c3_default>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
@ -335,6 +343,8 @@
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c4_default>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
@ -348,6 +358,8 @@
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c5_default>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
@ -363,6 +375,8 @@
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c10_default>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
@ -376,6 +390,8 @@
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c11_default>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -74,7 +74,7 @@
|
||||
/* Low speed expansion connector */
|
||||
spi0: spi@9844000 {
|
||||
label = "LS-SPI0";
|
||||
cs-gpio = <&pio30 3 0>;
|
||||
cs-gpios = <&pio30 3 0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -44,7 +44,7 @@
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "ntc-gr8.dtsi"
|
||||
#include "sun5i-gr8.dtsi"
|
||||
#include "sunxi-common-regulators.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
@ -282,11 +282,15 @@
|
||||
uart1_pins_a: uart1@0 {
|
||||
allwinner,pins = "PG6", "PG7";
|
||||
allwinner,function = "uart1";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
uart1_pins_cts_rts_a: uart1-cts-rts@0 {
|
||||
allwinner,pins = "PG8", "PG9";
|
||||
allwinner,function = "uart1";
|
||||
allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||
};
|
||||
|
||||
mmc0_pins_a: mmc0@0 {
|
||||
|
@ -8,7 +8,6 @@ generic-y += early_ioremap.h
|
||||
generic-y += emergency-restart.h
|
||||
generic-y += errno.h
|
||||
generic-y += exec.h
|
||||
generic-y += export.h
|
||||
generic-y += ioctl.h
|
||||
generic-y += ipcbuf.h
|
||||
generic-y += irq_regs.h
|
||||
|
@ -33,7 +33,7 @@ endif
|
||||
obj-$(CONFIG_CPU_IDLE) += cpuidle.o
|
||||
obj-$(CONFIG_ISA_DMA_API) += dma.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_ISA_DMA) += dma-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/ftrace.h>
|
||||
#include <asm/unwind.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
#include "entry-header.S"
|
||||
|
||||
@ -154,7 +153,6 @@ ENTRY(mcount)
|
||||
__mcount _old
|
||||
#endif
|
||||
ENDPROC(mcount)
|
||||
EXPORT_SYMBOL(mcount)
|
||||
|
||||
#ifdef CONFIG_DYNAMIC_FTRACE
|
||||
ENTRY(ftrace_caller_old)
|
||||
@ -207,7 +205,6 @@ UNWIND(.fnstart)
|
||||
#endif
|
||||
UNWIND(.fnend)
|
||||
ENDPROC(__gnu_mcount_nc)
|
||||
EXPORT_SYMBOL(__gnu_mcount_nc)
|
||||
|
||||
#ifdef CONFIG_DYNAMIC_FTRACE
|
||||
ENTRY(ftrace_caller)
|
||||
|
@ -22,7 +22,6 @@
|
||||
#include <asm/memory.h>
|
||||
#include <asm/thread_info.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
#if defined(CONFIG_DEBUG_LL) && !defined(CONFIG_DEBUG_SEMIHOSTING)
|
||||
#include CONFIG_DEBUG_LL_INCLUDE
|
||||
@ -728,8 +727,6 @@ __pv_phys_pfn_offset:
|
||||
__pv_offset:
|
||||
.quad 0
|
||||
.size __pv_offset, . -__pv_offset
|
||||
EXPORT_SYMBOL(__pv_phys_pfn_offset)
|
||||
EXPORT_SYMBOL(__pv_offset)
|
||||
#endif
|
||||
|
||||
#include "head-common.S"
|
||||
|
@ -16,7 +16,6 @@
|
||||
#include <asm/opcodes-sec.h>
|
||||
#include <asm/opcodes-virt.h>
|
||||
#include <asm/unwind.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
/*
|
||||
* Wrap c macros in asm macros to delay expansion until after the
|
||||
@ -52,7 +51,6 @@ UNWIND( .fnend)
|
||||
ENTRY(arm_smccc_smc)
|
||||
SMCCC SMCCC_SMC
|
||||
ENDPROC(arm_smccc_smc)
|
||||
EXPORT_SYMBOL(arm_smccc_smc)
|
||||
|
||||
/*
|
||||
* 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)
|
||||
SMCCC 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));
|
||||
}
|
||||
|
||||
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
|
||||
/*
|
||||
* Stack pointers should always be within the kernels view of
|
||||
|
@ -3,6 +3,9 @@
|
||||
* 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/cache.h>
|
||||
#include <asm/thread_info.h>
|
||||
@ -223,6 +226,8 @@ SECTIONS
|
||||
. = ALIGN(PAGE_SIZE);
|
||||
__init_end = .;
|
||||
|
||||
*(.data..ro_after_init)
|
||||
|
||||
NOSAVE_DATA
|
||||
CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
|
||||
READ_MOSTLY_DATA(L1_CACHE_BYTES)
|
||||
|
@ -28,7 +28,6 @@ Boston, MA 02110-1301, USA. */
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
#ifdef __ARMEB__
|
||||
#define al r1
|
||||
@ -53,5 +52,3 @@ ENTRY(__aeabi_llsl)
|
||||
|
||||
ENDPROC(__ashldi3)
|
||||
ENDPROC(__aeabi_llsl)
|
||||
EXPORT_SYMBOL(__ashldi3)
|
||||
EXPORT_SYMBOL(__aeabi_llsl)
|
||||
|
@ -28,7 +28,6 @@ Boston, MA 02110-1301, USA. */
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
#ifdef __ARMEB__
|
||||
#define al r1
|
||||
@ -53,5 +52,3 @@ ENTRY(__aeabi_lasr)
|
||||
|
||||
ENDPROC(__ashrdi3)
|
||||
ENDPROC(__aeabi_lasr)
|
||||
EXPORT_SYMBOL(__ashrdi3)
|
||||
EXPORT_SYMBOL(__aeabi_lasr)
|
||||
|
@ -10,6 +10,7 @@
|
||||
* 27/03/03 Ian Molton Clean up CONFIG_CPU
|
||||
*
|
||||
*/
|
||||
#include <linux/kern_levels.h>
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
.text
|
||||
@ -83,13 +84,13 @@ for_each_frame: tst frame, mask @ Check for address exceptions
|
||||
teq r3, r1, lsr #11
|
||||
ldreq r0, [frame, #-8] @ get sp
|
||||
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}
|
||||
ldr r3, .Ldsi @ instruction exists,
|
||||
teq r3, r1, lsr #11
|
||||
subeq r0, frame, #16
|
||||
bleq .Ldumpstm @ dump saved registers
|
||||
bleq dump_backtrace_stm @ dump saved registers
|
||||
|
||||
teq sv_fp, #0 @ zero saved fp means
|
||||
beq no_frame @ no further frames
|
||||
@ -112,38 +113,6 @@ ENDPROC(c_backtrace)
|
||||
.long 1004b, 1006b
|
||||
.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"
|
||||
.align
|
||||
.Ldsi: .word 0xe92dd800 >> 11 @ stmfd sp!, {... fp, ip, lr, pc}
|
||||
|
@ -1,6 +1,5 @@
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/unwind.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
#if __LINUX_ARM_ARCH__ >= 6
|
||||
.macro bitop, name, instr
|
||||
@ -26,7 +25,6 @@ UNWIND( .fnstart )
|
||||
bx lr
|
||||
UNWIND( .fnend )
|
||||
ENDPROC(\name )
|
||||
EXPORT_SYMBOL(\name )
|
||||
.endm
|
||||
|
||||
.macro testop, name, instr, store
|
||||
@ -57,7 +55,6 @@ UNWIND( .fnstart )
|
||||
2: bx lr
|
||||
UNWIND( .fnend )
|
||||
ENDPROC(\name )
|
||||
EXPORT_SYMBOL(\name )
|
||||
.endm
|
||||
#else
|
||||
.macro bitop, name, instr
|
||||
@ -77,7 +74,6 @@ UNWIND( .fnstart )
|
||||
ret lr
|
||||
UNWIND( .fnend )
|
||||
ENDPROC(\name )
|
||||
EXPORT_SYMBOL(\name )
|
||||
.endm
|
||||
|
||||
/**
|
||||
@ -106,6 +102,5 @@ UNWIND( .fnstart )
|
||||
ret lr
|
||||
UNWIND( .fnend )
|
||||
ENDPROC(\name )
|
||||
EXPORT_SYMBOL(\name )
|
||||
.endm
|
||||
#endif
|
||||
|
@ -1,6 +1,5 @@
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
#if __LINUX_ARM_ARCH__ >= 6
|
||||
ENTRY(__bswapsi2)
|
||||
@ -36,5 +35,3 @@ ENTRY(__bswapdi2)
|
||||
ret lr
|
||||
ENDPROC(__bswapdi2)
|
||||
#endif
|
||||
EXPORT_SYMBOL(__bswapsi2)
|
||||
EXPORT_SYMBOL(__bswapdi2)
|
||||
|
@ -10,7 +10,6 @@
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/unwind.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
.text
|
||||
|
||||
@ -51,9 +50,6 @@ USER( strnebt r2, [r0])
|
||||
UNWIND(.fnend)
|
||||
ENDPROC(arm_clear_user)
|
||||
ENDPROC(__clear_user_std)
|
||||
#ifndef CONFIG_UACCESS_WITH_MEMCPY
|
||||
EXPORT_SYMBOL(arm_clear_user)
|
||||
#endif
|
||||
|
||||
.pushsection .text.fixup,"ax"
|
||||
.align 0
|
||||
|
@ -13,7 +13,6 @@
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/unwind.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
/*
|
||||
* Prototype:
|
||||
@ -95,7 +94,6 @@ ENTRY(arm_copy_from_user)
|
||||
#include "copy_template.S"
|
||||
|
||||
ENDPROC(arm_copy_from_user)
|
||||
EXPORT_SYMBOL(arm_copy_from_user)
|
||||
|
||||
.pushsection .fixup,"ax"
|
||||
.align 0
|
||||
|
@ -13,7 +13,6 @@
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/asm-offsets.h>
|
||||
#include <asm/cache.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
#define COPY_COUNT (PAGE_SZ / (2 * L1_CACHE_BYTES) PLD( -1 ))
|
||||
|
||||
@ -46,4 +45,3 @@ ENTRY(copy_page)
|
||||
PLD( beq 2b )
|
||||
ldmfd sp!, {r4, pc} @ 3
|
||||
ENDPROC(copy_page)
|
||||
EXPORT_SYMBOL(copy_page)
|
||||
|
@ -13,7 +13,6 @@
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/unwind.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
/*
|
||||
* Prototype:
|
||||
@ -100,9 +99,6 @@ WEAK(arm_copy_to_user)
|
||||
|
||||
ENDPROC(arm_copy_to_user)
|
||||
ENDPROC(__copy_to_user_std)
|
||||
#ifndef CONFIG_UACCESS_WITH_MEMCPY
|
||||
EXPORT_SYMBOL(arm_copy_to_user)
|
||||
#endif
|
||||
|
||||
.pushsection .text.fixup,"ax"
|
||||
.align 0
|
||||
|
@ -9,7 +9,6 @@
|
||||
*/
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
.text
|
||||
|
||||
@ -31,4 +30,4 @@ ENTRY(__csum_ipv6_magic)
|
||||
adcs r0, r0, #0
|
||||
ldmfd sp!, {pc}
|
||||
ENDPROC(__csum_ipv6_magic)
|
||||
EXPORT_SYMBOL(__csum_ipv6_magic)
|
||||
|
||||
|
@ -9,7 +9,6 @@
|
||||
*/
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
.text
|
||||
|
||||
@ -141,4 +140,3 @@ ENTRY(csum_partial)
|
||||
bne 4b
|
||||
b .Lless4
|
||||
ENDPROC(csum_partial)
|
||||
EXPORT_SYMBOL(csum_partial)
|
||||
|
@ -49,6 +49,5 @@
|
||||
|
||||
#define FN_ENTRY ENTRY(csum_partial_copy_nocheck)
|
||||
#define FN_EXIT ENDPROC(csum_partial_copy_nocheck)
|
||||
#define FN_EXPORT EXPORT_SYMBOL(csum_partial_copy_nocheck)
|
||||
|
||||
#include "csumpartialcopygeneric.S"
|
||||
|
@ -8,7 +8,6 @@
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
/*
|
||||
* unsigned int
|
||||
@ -332,4 +331,3 @@ FN_ENTRY
|
||||
mov r5, r4, get_byte_1
|
||||
b .Lexit
|
||||
FN_EXIT
|
||||
FN_EXPORT
|
||||
|
@ -73,7 +73,6 @@
|
||||
|
||||
#define FN_ENTRY ENTRY(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"
|
||||
|
||||
|
@ -24,7 +24,6 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/timex.h>
|
||||
|
||||
/*
|
||||
@ -35,7 +34,6 @@ struct arm_delay_ops arm_delay_ops __ro_after_init = {
|
||||
.const_udelay = __loop_const_udelay,
|
||||
.udelay = __loop_udelay,
|
||||
};
|
||||
EXPORT_SYMBOL(arm_delay_ops);
|
||||
|
||||
static const struct delay_timer *delay_timer;
|
||||
static bool delay_calibrated;
|
||||
|
@ -15,7 +15,6 @@
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/unwind.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
#ifdef __ARMEB__
|
||||
#define xh r0
|
||||
@ -211,4 +210,3 @@ Ldiv0_64:
|
||||
|
||||
UNWIND(.fnend)
|
||||
ENDPROC(__do_div64)
|
||||
EXPORT_SYMBOL(__do_div64)
|
||||
|
@ -15,7 +15,6 @@
|
||||
*/
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
.text
|
||||
|
||||
/*
|
||||
@ -38,7 +37,6 @@ ENTRY(_find_first_zero_bit_le)
|
||||
3: mov r0, r1 @ no free bits
|
||||
ret lr
|
||||
ENDPROC(_find_first_zero_bit_le)
|
||||
EXPORT_SYMBOL(_find_first_zero_bit_le)
|
||||
|
||||
/*
|
||||
* Purpose : Find next 'zero' bit
|
||||
@ -59,7 +57,6 @@ ENTRY(_find_next_zero_bit_le)
|
||||
add r2, r2, #1 @ align bit pointer
|
||||
b 2b @ loop for next bit
|
||||
ENDPROC(_find_next_zero_bit_le)
|
||||
EXPORT_SYMBOL(_find_next_zero_bit_le)
|
||||
|
||||
/*
|
||||
* Purpose : Find a 'one' bit
|
||||
@ -81,7 +78,6 @@ ENTRY(_find_first_bit_le)
|
||||
3: mov r0, r1 @ no free bits
|
||||
ret lr
|
||||
ENDPROC(_find_first_bit_le)
|
||||
EXPORT_SYMBOL(_find_first_bit_le)
|
||||
|
||||
/*
|
||||
* Purpose : Find next 'one' bit
|
||||
@ -101,7 +97,6 @@ ENTRY(_find_next_bit_le)
|
||||
add r2, r2, #1 @ align bit pointer
|
||||
b 2b @ loop for next bit
|
||||
ENDPROC(_find_next_bit_le)
|
||||
EXPORT_SYMBOL(_find_next_bit_le)
|
||||
|
||||
#ifdef __ARMEB__
|
||||
|
||||
@ -121,7 +116,6 @@ ENTRY(_find_first_zero_bit_be)
|
||||
3: mov r0, r1 @ no free bits
|
||||
ret lr
|
||||
ENDPROC(_find_first_zero_bit_be)
|
||||
EXPORT_SYMBOL(_find_first_zero_bit_be)
|
||||
|
||||
ENTRY(_find_next_zero_bit_be)
|
||||
teq r1, #0
|
||||
@ -139,7 +133,6 @@ ENTRY(_find_next_zero_bit_be)
|
||||
add r2, r2, #1 @ align bit pointer
|
||||
b 2b @ loop for next bit
|
||||
ENDPROC(_find_next_zero_bit_be)
|
||||
EXPORT_SYMBOL(_find_next_zero_bit_be)
|
||||
|
||||
ENTRY(_find_first_bit_be)
|
||||
teq r1, #0
|
||||
@ -157,7 +150,6 @@ ENTRY(_find_first_bit_be)
|
||||
3: mov r0, r1 @ no free bits
|
||||
ret lr
|
||||
ENDPROC(_find_first_bit_be)
|
||||
EXPORT_SYMBOL(_find_first_bit_be)
|
||||
|
||||
ENTRY(_find_next_bit_be)
|
||||
teq r1, #0
|
||||
@ -174,7 +166,6 @@ ENTRY(_find_next_bit_be)
|
||||
add r2, r2, #1 @ align bit pointer
|
||||
b 2b @ loop for next bit
|
||||
ENDPROC(_find_next_bit_be)
|
||||
EXPORT_SYMBOL(_find_next_bit_be)
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -31,7 +31,6 @@
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/errno.h>
|
||||
#include <asm/domain.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
ENTRY(__get_user_1)
|
||||
check_uaccess r0, 1, r1, r2, __get_user_bad
|
||||
@ -39,7 +38,6 @@ ENTRY(__get_user_1)
|
||||
mov r0, #0
|
||||
ret lr
|
||||
ENDPROC(__get_user_1)
|
||||
EXPORT_SYMBOL(__get_user_1)
|
||||
|
||||
ENTRY(__get_user_2)
|
||||
check_uaccess r0, 2, r1, r2, __get_user_bad
|
||||
@ -60,7 +58,6 @@ rb .req r0
|
||||
mov r0, #0
|
||||
ret lr
|
||||
ENDPROC(__get_user_2)
|
||||
EXPORT_SYMBOL(__get_user_2)
|
||||
|
||||
ENTRY(__get_user_4)
|
||||
check_uaccess r0, 4, r1, r2, __get_user_bad
|
||||
@ -68,7 +65,6 @@ ENTRY(__get_user_4)
|
||||
mov r0, #0
|
||||
ret lr
|
||||
ENDPROC(__get_user_4)
|
||||
EXPORT_SYMBOL(__get_user_4)
|
||||
|
||||
ENTRY(__get_user_8)
|
||||
check_uaccess r0, 8, r1, r2, __get_user_bad
|
||||
@ -82,7 +78,6 @@ ENTRY(__get_user_8)
|
||||
mov r0, #0
|
||||
ret lr
|
||||
ENDPROC(__get_user_8)
|
||||
EXPORT_SYMBOL(__get_user_8)
|
||||
|
||||
#ifdef __ARMEB__
|
||||
ENTRY(__get_user_32t_8)
|
||||
@ -96,7 +91,6 @@ ENTRY(__get_user_32t_8)
|
||||
mov r0, #0
|
||||
ret lr
|
||||
ENDPROC(__get_user_32t_8)
|
||||
EXPORT_SYMBOL(__get_user_32t_8)
|
||||
|
||||
ENTRY(__get_user_64t_1)
|
||||
check_uaccess r0, 1, r1, r2, __get_user_bad8
|
||||
@ -104,7 +98,6 @@ ENTRY(__get_user_64t_1)
|
||||
mov r0, #0
|
||||
ret lr
|
||||
ENDPROC(__get_user_64t_1)
|
||||
EXPORT_SYMBOL(__get_user_64t_1)
|
||||
|
||||
ENTRY(__get_user_64t_2)
|
||||
check_uaccess r0, 2, r1, r2, __get_user_bad8
|
||||
@ -121,7 +114,6 @@ rb .req r0
|
||||
mov r0, #0
|
||||
ret lr
|
||||
ENDPROC(__get_user_64t_2)
|
||||
EXPORT_SYMBOL(__get_user_64t_2)
|
||||
|
||||
ENTRY(__get_user_64t_4)
|
||||
check_uaccess r0, 4, r1, r2, __get_user_bad8
|
||||
@ -129,7 +121,6 @@ ENTRY(__get_user_64t_4)
|
||||
mov r0, #0
|
||||
ret lr
|
||||
ENDPROC(__get_user_64t_4)
|
||||
EXPORT_SYMBOL(__get_user_64t_4)
|
||||
#endif
|
||||
|
||||
__get_user_bad8:
|
||||
|
@ -9,7 +9,6 @@
|
||||
*/
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
.Linsb_align: rsb ip, ip, #4
|
||||
cmp ip, r2
|
||||
@ -122,4 +121,3 @@ ENTRY(__raw_readsb)
|
||||
|
||||
ldmfd sp!, {r4 - r6, pc}
|
||||
ENDPROC(__raw_readsb)
|
||||
EXPORT_SYMBOL(__raw_readsb)
|
||||
|
@ -9,7 +9,6 @@
|
||||
*/
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
ENTRY(__raw_readsl)
|
||||
teq r2, #0 @ do we have to check for the zero len?
|
||||
@ -78,4 +77,3 @@ ENTRY(__raw_readsl)
|
||||
strb r3, [r1, #0]
|
||||
ret lr
|
||||
ENDPROC(__raw_readsl)
|
||||
EXPORT_SYMBOL(__raw_readsl)
|
||||
|
@ -9,7 +9,6 @@
|
||||
*/
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
.Linsw_bad_alignment:
|
||||
adr r0, .Linsw_bad_align_msg
|
||||
@ -104,4 +103,4 @@ ENTRY(__raw_readsw)
|
||||
|
||||
ldmfd sp!, {r4, r5, r6, pc}
|
||||
|
||||
EXPORT_SYMBOL(__raw_readsw)
|
||||
|
||||
|
@ -9,7 +9,6 @@
|
||||
*/
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
.macro pack, rd, hw1, hw2
|
||||
#ifndef __ARMEB__
|
||||
@ -130,4 +129,3 @@ ENTRY(__raw_readsw)
|
||||
strneb ip, [r1]
|
||||
ldmfd sp!, {r4, pc}
|
||||
ENDPROC(__raw_readsw)
|
||||
EXPORT_SYMBOL(__raw_readsw)
|
||||
|
@ -9,7 +9,6 @@
|
||||
*/
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
.macro outword, rd
|
||||
#ifndef __ARMEB__
|
||||
@ -93,4 +92,3 @@ ENTRY(__raw_writesb)
|
||||
|
||||
ldmfd sp!, {r4, r5, pc}
|
||||
ENDPROC(__raw_writesb)
|
||||
EXPORT_SYMBOL(__raw_writesb)
|
||||
|
@ -9,7 +9,6 @@
|
||||
*/
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
ENTRY(__raw_writesl)
|
||||
teq r2, #0 @ do we have to check for the zero len?
|
||||
@ -66,4 +65,3 @@ ENTRY(__raw_writesl)
|
||||
bne 6b
|
||||
ret lr
|
||||
ENDPROC(__raw_writesl)
|
||||
EXPORT_SYMBOL(__raw_writesl)
|
||||
|
@ -9,7 +9,6 @@
|
||||
*/
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
.Loutsw_bad_alignment:
|
||||
adr r0, .Loutsw_bad_align_msg
|
||||
@ -125,4 +124,3 @@ ENTRY(__raw_writesw)
|
||||
strne ip, [r0]
|
||||
|
||||
ldmfd sp!, {r4, r5, r6, pc}
|
||||
EXPORT_SYMBOL(__raw_writesw)
|
||||
|
@ -9,7 +9,6 @@
|
||||
*/
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
.macro outword, rd
|
||||
#ifndef __ARMEB__
|
||||
@ -99,4 +98,3 @@ ENTRY(__raw_writesw)
|
||||
strneh ip, [r0]
|
||||
ret lr
|
||||
ENDPROC(__raw_writesw)
|
||||
EXPORT_SYMBOL(__raw_writesw)
|
||||
|
@ -36,7 +36,6 @@ Boston, MA 02111-1307, USA. */
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/unwind.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
.macro ARM_DIV_BODY dividend, divisor, result, curbit
|
||||
|
||||
@ -239,8 +238,6 @@ UNWIND(.fnstart)
|
||||
UNWIND(.fnend)
|
||||
ENDPROC(__udivsi3)
|
||||
ENDPROC(__aeabi_uidiv)
|
||||
EXPORT_SYMBOL(__udivsi3)
|
||||
EXPORT_SYMBOL(__aeabi_uidiv)
|
||||
|
||||
ENTRY(__umodsi3)
|
||||
UNWIND(.fnstart)
|
||||
@ -259,7 +256,6 @@ UNWIND(.fnstart)
|
||||
|
||||
UNWIND(.fnend)
|
||||
ENDPROC(__umodsi3)
|
||||
EXPORT_SYMBOL(__umodsi3)
|
||||
|
||||
#ifdef CONFIG_ARM_PATCH_IDIV
|
||||
.align 3
|
||||
@ -307,8 +303,6 @@ UNWIND(.fnstart)
|
||||
UNWIND(.fnend)
|
||||
ENDPROC(__divsi3)
|
||||
ENDPROC(__aeabi_idiv)
|
||||
EXPORT_SYMBOL(__divsi3)
|
||||
EXPORT_SYMBOL(__aeabi_idiv)
|
||||
|
||||
ENTRY(__modsi3)
|
||||
UNWIND(.fnstart)
|
||||
@ -333,7 +327,6 @@ UNWIND(.fnstart)
|
||||
|
||||
UNWIND(.fnend)
|
||||
ENDPROC(__modsi3)
|
||||
EXPORT_SYMBOL(__modsi3)
|
||||
|
||||
#ifdef CONFIG_AEABI
|
||||
|
||||
@ -350,7 +343,6 @@ UNWIND(.save {r0, r1, ip, lr} )
|
||||
|
||||
UNWIND(.fnend)
|
||||
ENDPROC(__aeabi_uidivmod)
|
||||
EXPORT_SYMBOL(__aeabi_uidivmod)
|
||||
|
||||
ENTRY(__aeabi_idivmod)
|
||||
UNWIND(.fnstart)
|
||||
@ -364,7 +356,6 @@ UNWIND(.save {r0, r1, ip, lr} )
|
||||
|
||||
UNWIND(.fnend)
|
||||
ENDPROC(__aeabi_idivmod)
|
||||
EXPORT_SYMBOL(__aeabi_idivmod)
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -28,7 +28,6 @@ Boston, MA 02110-1301, USA. */
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
#ifdef __ARMEB__
|
||||
#define al r1
|
||||
@ -53,5 +52,3 @@ ENTRY(__aeabi_llsr)
|
||||
|
||||
ENDPROC(__lshrdi3)
|
||||
ENDPROC(__aeabi_llsr)
|
||||
EXPORT_SYMBOL(__lshrdi3)
|
||||
EXPORT_SYMBOL(__aeabi_llsr)
|
||||
|
@ -11,7 +11,6 @@
|
||||
*/
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
.text
|
||||
.align 5
|
||||
@ -25,4 +24,3 @@ ENTRY(memchr)
|
||||
2: movne r0, #0
|
||||
ret lr
|
||||
ENDPROC(memchr)
|
||||
EXPORT_SYMBOL(memchr)
|
||||
|
@ -13,7 +13,6 @@
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/unwind.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
#define LDR1W_SHIFT 0
|
||||
#define STR1W_SHIFT 0
|
||||
@ -69,5 +68,3 @@ ENTRY(memcpy)
|
||||
|
||||
ENDPROC(memcpy)
|
||||
ENDPROC(mmiocpy)
|
||||
EXPORT_SYMBOL(memcpy)
|
||||
EXPORT_SYMBOL(mmiocpy)
|
||||
|
@ -13,7 +13,6 @@
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/unwind.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
.text
|
||||
|
||||
@ -226,4 +225,3 @@ ENTRY(memmove)
|
||||
18: backward_copy_shift push=24 pull=8
|
||||
|
||||
ENDPROC(memmove)
|
||||
EXPORT_SYMBOL(memmove)
|
||||
|
@ -12,7 +12,6 @@
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/unwind.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
.text
|
||||
.align 5
|
||||
@ -136,5 +135,3 @@ UNWIND( .fnstart )
|
||||
UNWIND( .fnend )
|
||||
ENDPROC(memset)
|
||||
ENDPROC(mmioset)
|
||||
EXPORT_SYMBOL(memset)
|
||||
EXPORT_SYMBOL(mmioset)
|
||||
|
@ -10,7 +10,6 @@
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/unwind.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
.text
|
||||
.align 5
|
||||
@ -136,4 +135,3 @@ UNWIND( .fnstart )
|
||||
ret lr @ 1
|
||||
UNWIND( .fnend )
|
||||
ENDPROC(__memzero)
|
||||
EXPORT_SYMBOL(__memzero)
|
||||
|
@ -12,7 +12,6 @@
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
#ifdef __ARMEB__
|
||||
#define xh r0
|
||||
@ -47,5 +46,3 @@ ENTRY(__aeabi_lmul)
|
||||
|
||||
ENDPROC(__muldi3)
|
||||
ENDPROC(__aeabi_lmul)
|
||||
EXPORT_SYMBOL(__muldi3)
|
||||
EXPORT_SYMBOL(__aeabi_lmul)
|
||||
|
@ -31,7 +31,6 @@
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/errno.h>
|
||||
#include <asm/domain.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
ENTRY(__put_user_1)
|
||||
check_uaccess r0, 1, r1, ip, __put_user_bad
|
||||
@ -39,7 +38,6 @@ ENTRY(__put_user_1)
|
||||
mov r0, #0
|
||||
ret lr
|
||||
ENDPROC(__put_user_1)
|
||||
EXPORT_SYMBOL(__put_user_1)
|
||||
|
||||
ENTRY(__put_user_2)
|
||||
check_uaccess r0, 2, r1, ip, __put_user_bad
|
||||
@ -64,7 +62,6 @@ ENTRY(__put_user_2)
|
||||
mov r0, #0
|
||||
ret lr
|
||||
ENDPROC(__put_user_2)
|
||||
EXPORT_SYMBOL(__put_user_2)
|
||||
|
||||
ENTRY(__put_user_4)
|
||||
check_uaccess r0, 4, r1, ip, __put_user_bad
|
||||
@ -72,7 +69,6 @@ ENTRY(__put_user_4)
|
||||
mov r0, #0
|
||||
ret lr
|
||||
ENDPROC(__put_user_4)
|
||||
EXPORT_SYMBOL(__put_user_4)
|
||||
|
||||
ENTRY(__put_user_8)
|
||||
check_uaccess r0, 8, r1, ip, __put_user_bad
|
||||
@ -86,7 +82,6 @@ ENTRY(__put_user_8)
|
||||
mov r0, #0
|
||||
ret lr
|
||||
ENDPROC(__put_user_8)
|
||||
EXPORT_SYMBOL(__put_user_8)
|
||||
|
||||
__put_user_bad:
|
||||
mov r0, #-EFAULT
|
||||
|
@ -11,7 +11,6 @@
|
||||
*/
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
.text
|
||||
.align 5
|
||||
@ -26,4 +25,3 @@ ENTRY(strchr)
|
||||
subeq r0, r0, #1
|
||||
ret lr
|
||||
ENDPROC(strchr)
|
||||
EXPORT_SYMBOL(strchr)
|
||||
|
@ -11,7 +11,6 @@
|
||||
*/
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
.text
|
||||
.align 5
|
||||
@ -25,4 +24,3 @@ ENTRY(strrchr)
|
||||
mov r0, r3
|
||||
ret lr
|
||||
ENDPROC(strrchr)
|
||||
EXPORT_SYMBOL(strrchr)
|
||||
|
@ -19,7 +19,6 @@
|
||||
#include <linux/gfp.h>
|
||||
#include <linux/highmem.h>
|
||||
#include <linux/hugetlb.h>
|
||||
#include <linux/export.h>
|
||||
#include <asm/current.h>
|
||||
#include <asm/page.h>
|
||||
|
||||
@ -157,7 +156,6 @@ arm_copy_to_user(void __user *to, const void *from, unsigned long n)
|
||||
}
|
||||
return n;
|
||||
}
|
||||
EXPORT_SYMBOL(arm_copy_to_user);
|
||||
|
||||
static unsigned long noinline
|
||||
__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;
|
||||
}
|
||||
EXPORT_SYMBOL(arm_clear_user);
|
||||
|
||||
#if 0
|
||||
|
||||
|
@ -12,7 +12,6 @@
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
#ifdef __ARMEB__
|
||||
#define xh r0
|
||||
@ -36,7 +35,6 @@ ENTRY(__ucmpdi2)
|
||||
ret lr
|
||||
|
||||
ENDPROC(__ucmpdi2)
|
||||
EXPORT_SYMBOL(__ucmpdi2)
|
||||
|
||||
#ifdef CONFIG_AEABI
|
||||
|
||||
@ -50,7 +48,6 @@ ENTRY(__aeabi_ulcmp)
|
||||
ret lr
|
||||
|
||||
ENDPROC(__aeabi_ulcmp)
|
||||
EXPORT_SYMBOL(__aeabi_ulcmp)
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -32,6 +32,7 @@ endif
|
||||
|
||||
ifdef CONFIG_SND_IMX_SOC
|
||||
obj-y += ssi-fiq.o
|
||||
obj-y += ssi-fiq-ksym.o
|
||||
endif
|
||||
|
||||
# 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 <asm/assembler.h>
|
||||
#include <asm/export.h>
|
||||
|
||||
/*
|
||||
* r8 = bit 0-15: tx offset, bit 16-31: tx buffer size
|
||||
@ -145,8 +144,4 @@ imx_ssi_fiq_tx_buffer:
|
||||
.word 0x0
|
||||
.L_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 ARM_ERRATA_754322
|
||||
select ARM_ERRATA_775420
|
||||
select OMAP_INTERCONNECT
|
||||
|
||||
config SOC_DRA7XX
|
||||
bool "TI DRA7XX"
|
||||
|
@ -205,11 +205,15 @@ void __init omap2xxx_check_revision(void)
|
||||
|
||||
#define OMAP3_SHOW_FEATURE(feat) \
|
||||
if (omap3_has_ ##feat()) \
|
||||
printk(#feat" ");
|
||||
n += scnprintf(buf + n, sizeof(buf) - n, #feat " ");
|
||||
|
||||
static void __init omap3_cpuinfo(void)
|
||||
{
|
||||
const char *cpu_name;
|
||||
char buf[64];
|
||||
int n = 0;
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
|
||||
/*
|
||||
* OMAP3430 and OMAP3530 are assumed to be same.
|
||||
@ -241,10 +245,10 @@ static void __init omap3_cpuinfo(void)
|
||||
cpu_name = "OMAP3503";
|
||||
}
|
||||
|
||||
sprintf(soc_name, "%s", cpu_name);
|
||||
scnprintf(soc_name, sizeof(soc_name), "%s", cpu_name);
|
||||
|
||||
/* 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(iva);
|
||||
@ -252,8 +256,10 @@ static void __init omap3_cpuinfo(void)
|
||||
OMAP3_SHOW_FEATURE(neon);
|
||||
OMAP3_SHOW_FEATURE(isp);
|
||||
OMAP3_SHOW_FEATURE(192mhz_clk);
|
||||
|
||||
printk(")\n");
|
||||
if (*(buf + n - 1) == ' ')
|
||||
n--;
|
||||
n += scnprintf(buf + n, sizeof(buf) - n, ")\n");
|
||||
pr_info("%s", buf);
|
||||
}
|
||||
|
||||
#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) {
|
||||
en_uart4_mask = OMAP3630_EN_UART4_MASK;
|
||||
grpsel_uart4_mask = OMAP3630_GRPSEL_UART4_MASK;
|
||||
} else {
|
||||
en_uart4_mask = 0;
|
||||
grpsel_uart4_mask = 0;
|
||||
}
|
||||
|
||||
/* Enable wakeups in PER */
|
||||
|
@ -87,6 +87,12 @@ int voltdm_scale(struct voltagedomain *voltdm,
|
||||
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 */
|
||||
for (i = 0; voltdm->volt_data[i].volt_nominal != 0; i++) {
|
||||
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);
|
||||
return 0;
|
||||
}
|
||||
fs_initcall(dma_debug_do_init);
|
||||
core_initcall(dma_debug_do_init);
|
||||
|
||||
#ifdef CONFIG_ARM_DMA_USE_IOMMU
|
||||
|
||||
|
@ -96,7 +96,7 @@ ENTRY(cpu_cm7_proc_fin)
|
||||
ret lr
|
||||
ENDPROC(cpu_cm7_proc_fin)
|
||||
|
||||
.section ".text.init", #alloc, #execinstr
|
||||
.section ".init.text", #alloc, #execinstr
|
||||
|
||||
__v7m_cm7_setup:
|
||||
mov r8, #(V7M_SCB_CCR_DC | V7M_SCB_CCR_IC| V7M_SCB_CCR_BP)
|
||||
|
@ -393,7 +393,7 @@
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
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>,
|
||||
<0x42000000 0x40 0x00000000 0x40 0x00000000 0x1 0x00000000>;
|
||||
#interrupt-cells = <1>;
|
||||
|
@ -76,7 +76,7 @@
|
||||
compatible = "arm,idle-state";
|
||||
arm,psci-suspend-param = <0x1010000>;
|
||||
local-timer-stop;
|
||||
entry-latency-us = <300>;
|
||||
entry-latency-us = <400>;
|
||||
exit-latency-us = <1200>;
|
||||
min-residency-us = <2500>;
|
||||
};
|
||||
|
@ -76,7 +76,7 @@
|
||||
compatible = "arm,idle-state";
|
||||
arm,psci-suspend-param = <0x1010000>;
|
||||
local-timer-stop;
|
||||
entry-latency-us = <300>;
|
||||
entry-latency-us = <400>;
|
||||
exit-latency-us = <1200>;
|
||||
min-residency-us = <2500>;
|
||||
};
|
||||
|
@ -76,7 +76,7 @@
|
||||
compatible = "arm,idle-state";
|
||||
arm,psci-suspend-param = <0x1010000>;
|
||||
local-timer-stop;
|
||||
entry-latency-us = <300>;
|
||||
entry-latency-us = <400>;
|
||||
exit-latency-us = <1200>;
|
||||
min-residency-us = <2500>;
|
||||
};
|
||||
|
@ -105,7 +105,7 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
nb_perih_clk: nb-periph-clk@13000{
|
||||
nb_periph_clk: nb-periph-clk@13000 {
|
||||
compatible = "marvell,armada-3700-periph-clock-nb";
|
||||
reg = <0x13000 0x100>;
|
||||
clocks = <&tbg 0>, <&tbg 1>, <&tbg 2>,
|
||||
@ -113,7 +113,7 @@
|
||||
#clock-cells = <1>;
|
||||
};
|
||||
|
||||
sb_perih_clk: sb-periph-clk@18000{
|
||||
sb_periph_clk: sb-periph-clk@18000 {
|
||||
compatible = "marvell,armada-3700-periph-clock-sb";
|
||||
reg = <0x18000 0x100>;
|
||||
clocks = <&tbg 0>, <&tbg 1>, <&tbg 2>,
|
||||
|
@ -130,8 +130,8 @@
|
||||
reg = <0x700600 0x50>;
|
||||
#address-cells = <0x1>;
|
||||
#size-cells = <0x0>;
|
||||
cell-index = <1>;
|
||||
clocks = <&cps_syscon0 0 3>;
|
||||
cell-index = <3>;
|
||||
clocks = <&cps_syscon0 1 21>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
@ -140,7 +140,7 @@
|
||||
reg = <0x700680 0x50>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
cell-index = <2>;
|
||||
cell-index = <4>;
|
||||
clocks = <&cps_syscon0 1 21>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -46,7 +46,15 @@
|
||||
#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_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
|
||||
|
@ -31,17 +31,9 @@
|
||||
|
||||
/*
|
||||
* 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. */
|
||||
#define ARMV8_PMUV3_PERFCTR_INST_RETIRED 0x08
|
||||
#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;
|
||||
} 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) {
|
||||
/* PMEVCNTRn_EL0 */
|
||||
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);
|
||||
} else {
|
||||
BUG();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!pmu_counter_idx_valid(vcpu, idx))
|
||||
|
@ -214,6 +214,12 @@
|
||||
#error Bad page size configuration for hugetlbfs!
|
||||
#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
|
||||
*/
|
||||
|
@ -1,6 +1,9 @@
|
||||
#ifndef __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
|
||||
* we need to flush cache for area to be unmapped.
|
||||
@ -22,6 +25,16 @@
|
||||
((CKSEG0 + ((idx) << (PAGE_SHIFT + 1))) | \
|
||||
(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>
|
||||
|
||||
#endif /* __ASM_TLB_H */
|
||||
|
@ -209,17 +209,18 @@ bad_area_nosemaphore:
|
||||
if (show_unhandled_signals &&
|
||||
unhandled_signal(tsk, SIGSEGV) &&
|
||||
__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,
|
||||
write ? "write access to" : "read access from",
|
||||
field, address);
|
||||
pr_info("epc = %0*lx in", field,
|
||||
(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,
|
||||
(unsigned long) regs->regs[31]);
|
||||
print_vma_addr(" ", regs->regs[31]);
|
||||
pr_info("\n");
|
||||
print_vma_addr(KERN_CONT " ", regs->regs[31]);
|
||||
pr_cont("\n");
|
||||
}
|
||||
current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
|
||||
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);
|
||||
}
|
||||
#endif
|
||||
tlbidx = read_c0_wired();
|
||||
tlbidx = num_wired_entries();
|
||||
write_c0_wired(tlbidx + 1);
|
||||
write_c0_index(tlbidx);
|
||||
mtc0_tlbw_hazard();
|
||||
@ -147,7 +147,7 @@ void kunmap_coherent(void)
|
||||
|
||||
local_irq_save(flags);
|
||||
old_ctx = read_c0_entryhi();
|
||||
wired = read_c0_wired() - 1;
|
||||
wired = num_wired_entries() - 1;
|
||||
write_c0_wired(wired);
|
||||
write_c0_index(wired);
|
||||
write_c0_entryhi(UNIQUE_ENTRYHI(wired));
|
||||
|
@ -65,7 +65,7 @@ void local_flush_tlb_all(void)
|
||||
write_c0_entrylo0(0);
|
||||
write_c0_entrylo1(0);
|
||||
|
||||
entry = read_c0_wired();
|
||||
entry = num_wired_entries();
|
||||
|
||||
/*
|
||||
* Blast 'em all away.
|
||||
@ -385,7 +385,7 @@ void add_wired_entry(unsigned long entrylo0, unsigned long entrylo1,
|
||||
old_ctx = read_c0_entryhi();
|
||||
htw_stop();
|
||||
old_pagemask = read_c0_pagemask();
|
||||
wired = read_c0_wired();
|
||||
wired = num_wired_entries();
|
||||
write_c0_wired(wired + 1);
|
||||
write_c0_index(wired);
|
||||
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();
|
||||
old_ctx = read_c0_entryhi();
|
||||
old_pagemask = read_c0_pagemask();
|
||||
wired = read_c0_wired();
|
||||
wired = num_wired_entries();
|
||||
if (--temp_tlb_entry < wired) {
|
||||
printk(KERN_WARNING
|
||||
"No TLB space left for add_temporary_entry\n");
|
||||
|
@ -34,7 +34,9 @@ config PARISC
|
||||
select HAVE_ARCH_HASH
|
||||
select HAVE_ARCH_SECCOMP_FILTER
|
||||
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 CPU_NO_EFFICIENT_FFS
|
||||
|
||||
|
@ -369,6 +369,7 @@ void __init parisc_setup_cache_timing(void)
|
||||
{
|
||||
unsigned long rangetime, alltime;
|
||||
unsigned long size, start;
|
||||
unsigned long threshold;
|
||||
|
||||
alltime = mfctl(16);
|
||||
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",
|
||||
alltime, size, rangetime);
|
||||
|
||||
/* Racy, but if we see an intermediate value, it's ok too... */
|
||||
parisc_cache_flush_threshold = size * alltime / rangetime;
|
||||
|
||||
parisc_cache_flush_threshold = L1_CACHE_ALIGN(parisc_cache_flush_threshold);
|
||||
if (!parisc_cache_flush_threshold)
|
||||
parisc_cache_flush_threshold = FLUSH_THRESHOLD;
|
||||
|
||||
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",
|
||||
threshold = L1_CACHE_ALIGN(size * alltime / rangetime);
|
||||
if (threshold > cache_info.dc_size)
|
||||
threshold = cache_info.dc_size;
|
||||
if (threshold)
|
||||
parisc_cache_flush_threshold = threshold;
|
||||
printk(KERN_INFO "Cache flush threshold set to %lu KiB\n",
|
||||
parisc_cache_flush_threshold/1024);
|
||||
|
||||
/* calculate TLB flush threshold */
|
||||
@ -401,7 +397,7 @@ void __init parisc_setup_cache_timing(void)
|
||||
flush_tlb_all();
|
||||
alltime = mfctl(16) - alltime;
|
||||
|
||||
size = PAGE_SIZE;
|
||||
size = 0;
|
||||
start = (unsigned long) _text;
|
||||
rangetime = mfctl(16);
|
||||
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",
|
||||
alltime, size, rangetime);
|
||||
|
||||
parisc_tlb_flush_threshold = size * alltime / rangetime;
|
||||
parisc_tlb_flush_threshold *= num_online_cpus();
|
||||
parisc_tlb_flush_threshold = PAGE_ALIGN(parisc_tlb_flush_threshold);
|
||||
if (!parisc_tlb_flush_threshold)
|
||||
parisc_tlb_flush_threshold = FLUSH_TLB_THRESHOLD;
|
||||
|
||||
printk(KERN_INFO "Setting TLB flush threshold to %lu kB\n",
|
||||
threshold = PAGE_ALIGN(num_online_cpus() * size * alltime / rangetime);
|
||||
if (threshold)
|
||||
parisc_tlb_flush_threshold = threshold;
|
||||
printk(KERN_INFO "TLB flush threshold set to %lu KiB\n",
|
||||
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);
|
||||
if (status == PDC_OK) {
|
||||
pdc_type = PDC_TYPE_SYSTEM_MAP;
|
||||
printk("System Map.\n");
|
||||
pr_cont("System Map.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -77,7 +77,7 @@ void __init setup_pdc(void)
|
||||
status = pdc_pat_cell_get_number(&cell_info);
|
||||
if (status == PDC_OK) {
|
||||
pdc_type = PDC_TYPE_PAT;
|
||||
printk("64 bit PAT.\n");
|
||||
pr_cont("64 bit PAT.\n");
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
@ -97,12 +97,12 @@ void __init setup_pdc(void)
|
||||
case 0xC: /* 715/64, at least */
|
||||
|
||||
pdc_type = PDC_TYPE_SNAKE;
|
||||
printk("Snake.\n");
|
||||
pr_cont("Snake.\n");
|
||||
return;
|
||||
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
@ -96,7 +96,7 @@ fitmanyloop: /* Loop if LOOP >= 2 */
|
||||
|
||||
fitmanymiddle: /* Loop if LOOP >= 2 */
|
||||
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 */
|
||||
addib,COND(>) -1, %r29, fitmanymiddle /* Middle loop decr */
|
||||
copy %arg3, %r31 /* Re-init inner loop count */
|
||||
@ -139,7 +139,7 @@ fdtmanyloop: /* Loop if LOOP >= 2 */
|
||||
|
||||
fdtmanymiddle: /* Loop if LOOP >= 2 */
|
||||
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 */
|
||||
addib,COND(>) -1, %r29, fdtmanymiddle /* Middle loop decr */
|
||||
copy %arg3, %r31 /* Re-init inner loop count */
|
||||
@ -626,12 +626,12 @@ ENTRY_CFI(copy_user_page_asm)
|
||||
/* Purge any old translations */
|
||||
|
||||
#ifdef CONFIG_PA20
|
||||
pdtlb,l 0(%r28)
|
||||
pdtlb,l 0(%r29)
|
||||
pdtlb,l %r0(%r28)
|
||||
pdtlb,l %r0(%r29)
|
||||
#else
|
||||
tlb_lock %r20,%r21,%r22
|
||||
pdtlb 0(%r28)
|
||||
pdtlb 0(%r29)
|
||||
pdtlb %r0(%r28)
|
||||
pdtlb %r0(%r29)
|
||||
tlb_unlock %r20,%r21,%r22
|
||||
#endif
|
||||
|
||||
@ -774,10 +774,10 @@ ENTRY_CFI(clear_user_page_asm)
|
||||
/* Purge any old translation */
|
||||
|
||||
#ifdef CONFIG_PA20
|
||||
pdtlb,l 0(%r28)
|
||||
pdtlb,l %r0(%r28)
|
||||
#else
|
||||
tlb_lock %r20,%r21,%r22
|
||||
pdtlb 0(%r28)
|
||||
pdtlb %r0(%r28)
|
||||
tlb_unlock %r20,%r21,%r22
|
||||
#endif
|
||||
|
||||
@ -858,10 +858,10 @@ ENTRY_CFI(flush_dcache_page_asm)
|
||||
/* Purge any old translation */
|
||||
|
||||
#ifdef CONFIG_PA20
|
||||
pdtlb,l 0(%r28)
|
||||
pdtlb,l %r0(%r28)
|
||||
#else
|
||||
tlb_lock %r20,%r21,%r22
|
||||
pdtlb 0(%r28)
|
||||
pdtlb %r0(%r28)
|
||||
tlb_unlock %r20,%r21,%r22
|
||||
#endif
|
||||
|
||||
@ -898,10 +898,10 @@ ENTRY_CFI(flush_dcache_page_asm)
|
||||
sync
|
||||
|
||||
#ifdef CONFIG_PA20
|
||||
pdtlb,l 0(%r25)
|
||||
pdtlb,l %r0(%r25)
|
||||
#else
|
||||
tlb_lock %r20,%r21,%r22
|
||||
pdtlb 0(%r25)
|
||||
pdtlb %r0(%r25)
|
||||
tlb_unlock %r20,%r21,%r22
|
||||
#endif
|
||||
|
||||
@ -931,13 +931,18 @@ ENTRY_CFI(flush_icache_page_asm)
|
||||
depwi 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */
|
||||
#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
|
||||
pdtlb,l %r0(%r28)
|
||||
pitlb,l %r0(%sr4,%r28)
|
||||
#else
|
||||
tlb_lock %r20,%r21,%r22
|
||||
pitlb (%sr4,%r28)
|
||||
pdtlb %r0(%r28)
|
||||
pitlb %r0(%sr4,%r28)
|
||||
tlb_unlock %r20,%r21,%r22
|
||||
#endif
|
||||
|
||||
@ -976,10 +981,12 @@ ENTRY_CFI(flush_icache_page_asm)
|
||||
sync
|
||||
|
||||
#ifdef CONFIG_PA20
|
||||
pdtlb,l %r0(%r28)
|
||||
pitlb,l %r0(%sr4,%r25)
|
||||
#else
|
||||
tlb_lock %r20,%r21,%r22
|
||||
pitlb (%sr4,%r25)
|
||||
pdtlb %r0(%r28)
|
||||
pitlb %r0(%sr4,%r25)
|
||||
tlb_unlock %r20,%r21,%r22
|
||||
#endif
|
||||
|
||||
|
@ -95,8 +95,8 @@ static inline int map_pte_uncached(pte_t * pte,
|
||||
|
||||
if (!pte_none(*pte))
|
||||
printk(KERN_ERR "map_pte_uncached: page already exists\n");
|
||||
set_pte(pte, __mk_pte(*paddr_ptr, PAGE_KERNEL_UNC));
|
||||
purge_tlb_start(flags);
|
||||
set_pte(pte, __mk_pte(*paddr_ptr, PAGE_KERNEL_UNC));
|
||||
pdtlb_kernel(orig_vaddr);
|
||||
purge_tlb_end(flags);
|
||||
vaddr += PAGE_SIZE;
|
||||
|
@ -334,6 +334,10 @@ static int __init parisc_init(void)
|
||||
/* tell PDC we're Linux. Nevermind failure. */
|
||||
pdc_stable_write(0x40, &osid, sizeof(osid));
|
||||
|
||||
/* start with known state */
|
||||
flush_cache_all_local();
|
||||
flush_tlb_all_local(NULL);
|
||||
|
||||
processor_init();
|
||||
#ifdef CONFIG_SMP
|
||||
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/rtc.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/sched_clock.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/param.h>
|
||||
#include <linux/string.h>
|
||||
@ -39,18 +40,6 @@
|
||||
|
||||
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
|
||||
* 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);
|
||||
|
||||
#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.
|
||||
* The new CR16 must be "later" than current CR16 otherwise
|
||||
* itimer would not fire until CR16 wrapped - e.g 4 seconds
|
||||
@ -208,7 +191,7 @@ EXPORT_SYMBOL(profile_pc);
|
||||
|
||||
/* clock source code */
|
||||
|
||||
static cycle_t read_cr16(struct clocksource *cs)
|
||||
static cycle_t notrace read_cr16(struct clocksource *cs)
|
||||
{
|
||||
return get_cycles();
|
||||
}
|
||||
@ -287,26 +270,9 @@ void read_persistent_clock(struct timespec *ts)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* sched_clock() framework
|
||||
*/
|
||||
|
||||
static u32 cyc2ns_mul __read_mostly;
|
||||
static u32 cyc2ns_shift __read_mostly;
|
||||
|
||||
u64 sched_clock(void)
|
||||
static u64 notrace read_cr16_sched_clock(void)
|
||||
{
|
||||
u64 now;
|
||||
|
||||
/* 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);
|
||||
return get_cycles();
|
||||
}
|
||||
|
||||
|
||||
@ -316,17 +282,16 @@ u64 sched_clock(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;
|
||||
|
||||
/* 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 */
|
||||
|
||||
cr16_hz = 100 * PAGE0->mem_10msec; /* Hz */
|
||||
|
||||
/* 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