提交 6f387515 编写于 作者: I Ingo Molnar

Merge branch 'linus' into locking/core, to pick up fixes

Signed-off-by: NIngo Molnar <mingo@kernel.org>
...@@ -9,7 +9,7 @@ ...@@ -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 ...@@ -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 ...@@ -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
......
...@@ -9,10 +9,26 @@ The following properties are common to the Ethernet controllers: ...@@ -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;
......
...@@ -62,10 +62,13 @@ nf_conntrack_generic_timeout - INTEGER (seconds) ...@@ -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
......
...@@ -77,6 +77,7 @@ Descriptions of section entries: ...@@ -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 ...@@ -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/ ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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
...@@ -5663,6 +5670,7 @@ HIBERNATION (aka Software Suspend, aka swsusp) ...@@ -5663,6 +5670,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/
...@@ -9249,11 +9257,12 @@ S: Maintained ...@@ -9249,11 +9257,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
...@@ -9312,17 +9321,11 @@ F: drivers/pci/host/pci-exynos.c ...@@ -9312,17 +9321,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>
...@@ -9624,6 +9627,7 @@ POWER MANAGEMENT CORE ...@@ -9624,6 +9627,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
...@@ -11613,6 +11617,7 @@ M: "Rafael J. Wysocki" <rjw@rjwysocki.net> ...@@ -11613,6 +11617,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/
......
VERSION = 4 VERSION = 4
PATCHLEVEL = 9 PATCHLEVEL = 9
SUBLEVEL = 0 SUBLEVEL = 0
EXTRAVERSION = -rc6 EXTRAVERSION = -rc8
NAME = Psychotic Stoned Sheep NAME = Psychotic Stoned Sheep
# *DOCUMENTATION* # *DOCUMENTATION*
...@@ -607,6 +607,13 @@ else ...@@ -607,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
...@@ -944,7 +951,7 @@ ifdef CONFIG_GDB_SCRIPTS ...@@ -944,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
...@@ -1019,8 +1026,6 @@ prepare2: prepare3 prepare-compiler-check outputmakefile asm-generic ...@@ -1019,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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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) += \ ...@@ -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) += \ ...@@ -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 \
......
...@@ -643,9 +643,8 @@ ...@@ -643,9 +643,8 @@
reg = <0x30730000 0x10000>; reg = <0x30730000 0x10000>;
interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_LCDIF_PIXEL_ROOT_CLK>, clocks = <&clks IMX7D_LCDIF_PIXEL_ROOT_CLK>,
<&clks IMX7D_CLK_DUMMY>, <&clks IMX7D_LCDIF_PIXEL_ROOT_CLK>;
<&clks IMX7D_CLK_DUMMY>; clock-names = "pix", "axi";
clock-names = "pix", "axi", "disp_axi";
status = "disabled"; status = "disabled";
}; };
}; };
......
...@@ -82,6 +82,10 @@ ...@@ -82,6 +82,10 @@
gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>;
}; };
&sata {
nr-ports = <2>;
};
&ehci1 { &ehci1 {
status = "okay"; status = "okay";
}; };
...@@ -283,6 +283,8 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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";
}; };
......
...@@ -44,7 +44,7 @@ ...@@ -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>
......
...@@ -410,7 +410,7 @@ ...@@ -410,7 +410,7 @@
}; };
uart3_pins: uart3 { uart3_pins: uart3 {
allwinner,pins = "PG13", "PG14"; allwinner,pins = "PA13", "PA14";
allwinner,function = "uart3"; allwinner,function = "uart3";
allwinner,drive = <SUN4I_PINCTRL_10_MA>; allwinner,drive = <SUN4I_PINCTRL_10_MA>;
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
......
...@@ -8,7 +8,6 @@ generic-y += early_ioremap.h ...@@ -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 ...@@ -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
......
/*
* 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 @@ ...@@ -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) ...@@ -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) ...@@ -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 @@ ...@@ -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: ...@@ -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 @@ ...@@ -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) ...@@ -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) ...@@ -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)
...@@ -28,7 +28,6 @@ Boston, MA 02110-1301, USA. */ ...@@ -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) ...@@ -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. */ ...@@ -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) ...@@ -53,5 +52,3 @@ ENTRY(__aeabi_lasr)
ENDPROC(__ashrdi3) ENDPROC(__ashrdi3)
ENDPROC(__aeabi_lasr) ENDPROC(__aeabi_lasr)
EXPORT_SYMBOL(__ashrdi3)
EXPORT_SYMBOL(__aeabi_lasr)
#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 ) ...@@ -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 ) ...@@ -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 ) ...@@ -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 ) ...@@ -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
#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) ...@@ -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 @@ ...@@ -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]) ...@@ -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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 = { ...@@ -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 @@ ...@@ -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: ...@@ -211,4 +210,3 @@ Ldiv0_64:
UNWIND(.fnend) UNWIND(.fnend)
ENDPROC(__do_div64) ENDPROC(__do_div64)
EXPORT_SYMBOL(__do_div64)
...@@ -15,7 +15,6 @@ ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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 ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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 ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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. */ ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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} ) ...@@ -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} ) ...@@ -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. */ ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -69,5 +68,3 @@ ENTRY(memcpy)
ENDPROC(memcpy) ENDPROC(memcpy)
ENDPROC(mmiocpy) ENDPROC(mmiocpy)
EXPORT_SYMBOL(memcpy)
EXPORT_SYMBOL(mmiocpy)
...@@ -13,7 +13,6 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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 ) ...@@ -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 @@ ...@@ -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 ) ...@@ -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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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) ...@@ -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 ...@@ -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
......
/*
* 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 @@ ...@@ -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: ...@@ -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)
...@@ -393,7 +393,7 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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>;
}; };
......
...@@ -95,9 +95,10 @@ CONFIG_NF_TABLES_INET=m ...@@ -95,9 +95,10 @@ CONFIG_NF_TABLES_INET=m
CONFIG_NF_TABLES_NETDEV=m CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m CONFIG_NFT_META=m
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m CONFIG_NFT_CT=m
CONFIG_NFT_RBTREE=m CONFIG_NFT_SET_RBTREE=m
CONFIG_NFT_HASH=m CONFIG_NFT_SET_HASH=m
CONFIG_NFT_COUNTER=m CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m CONFIG_NFT_LIMIT=m
...@@ -105,8 +106,10 @@ CONFIG_NFT_MASQ=m ...@@ -105,8 +106,10 @@ CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m CONFIG_NFT_REJECT=m
CONFIG_NFT_COMPAT=m CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_DUP_NETDEV=m CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m CONFIG_NFT_FWD_NETDEV=m
CONFIG_NETFILTER_XT_SET=m CONFIG_NETFILTER_XT_SET=m
...@@ -366,6 +369,7 @@ CONFIG_NETCONSOLE=m ...@@ -366,6 +369,7 @@ CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_VETH=m CONFIG_VETH=m
# CONFIG_NET_VENDOR_3COM is not set # CONFIG_NET_VENDOR_3COM is not set
# CONFIG_NET_VENDOR_AMAZON is not set
CONFIG_A2065=y CONFIG_A2065=y
CONFIG_ARIADNE=y CONFIG_ARIADNE=y
# CONFIG_NET_VENDOR_ARC is not set # CONFIG_NET_VENDOR_ARC is not set
......
...@@ -93,9 +93,10 @@ CONFIG_NF_TABLES_INET=m ...@@ -93,9 +93,10 @@ CONFIG_NF_TABLES_INET=m
CONFIG_NF_TABLES_NETDEV=m CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m CONFIG_NFT_META=m
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m CONFIG_NFT_CT=m
CONFIG_NFT_RBTREE=m CONFIG_NFT_SET_RBTREE=m
CONFIG_NFT_HASH=m CONFIG_NFT_SET_HASH=m
CONFIG_NFT_COUNTER=m CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m CONFIG_NFT_LIMIT=m
...@@ -103,8 +104,10 @@ CONFIG_NFT_MASQ=m ...@@ -103,8 +104,10 @@ CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m CONFIG_NFT_REJECT=m
CONFIG_NFT_COMPAT=m CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_DUP_NETDEV=m CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m CONFIG_NFT_FWD_NETDEV=m
CONFIG_NETFILTER_XT_SET=m CONFIG_NETFILTER_XT_SET=m
...@@ -347,6 +350,7 @@ CONFIG_MACSEC=m ...@@ -347,6 +350,7 @@ CONFIG_MACSEC=m
CONFIG_NETCONSOLE=m CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_VETH=m CONFIG_VETH=m
# CONFIG_NET_VENDOR_AMAZON is not set
# CONFIG_NET_VENDOR_ARC is not set # CONFIG_NET_VENDOR_ARC is not set
# CONFIG_NET_CADENCE is not set # CONFIG_NET_CADENCE is not set
# CONFIG_NET_VENDOR_BROADCOM is not set # CONFIG_NET_VENDOR_BROADCOM is not set
......
...@@ -93,9 +93,10 @@ CONFIG_NF_TABLES_INET=m ...@@ -93,9 +93,10 @@ CONFIG_NF_TABLES_INET=m
CONFIG_NF_TABLES_NETDEV=m CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m CONFIG_NFT_META=m
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m CONFIG_NFT_CT=m
CONFIG_NFT_RBTREE=m CONFIG_NFT_SET_RBTREE=m
CONFIG_NFT_HASH=m CONFIG_NFT_SET_HASH=m
CONFIG_NFT_COUNTER=m CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m CONFIG_NFT_LIMIT=m
...@@ -103,8 +104,10 @@ CONFIG_NFT_MASQ=m ...@@ -103,8 +104,10 @@ CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m CONFIG_NFT_REJECT=m
CONFIG_NFT_COMPAT=m CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_DUP_NETDEV=m CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m CONFIG_NFT_FWD_NETDEV=m
CONFIG_NETFILTER_XT_SET=m CONFIG_NETFILTER_XT_SET=m
...@@ -356,6 +359,7 @@ CONFIG_MACSEC=m ...@@ -356,6 +359,7 @@ CONFIG_MACSEC=m
CONFIG_NETCONSOLE=m CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_VETH=m CONFIG_VETH=m
# CONFIG_NET_VENDOR_AMAZON is not set
CONFIG_ATARILANCE=y CONFIG_ATARILANCE=y
# CONFIG_NET_VENDOR_ARC is not set # CONFIG_NET_VENDOR_ARC is not set
# CONFIG_NET_CADENCE is not set # CONFIG_NET_CADENCE is not set
......
...@@ -91,9 +91,10 @@ CONFIG_NF_TABLES_INET=m ...@@ -91,9 +91,10 @@ CONFIG_NF_TABLES_INET=m
CONFIG_NF_TABLES_NETDEV=m CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m CONFIG_NFT_META=m
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m CONFIG_NFT_CT=m
CONFIG_NFT_RBTREE=m CONFIG_NFT_SET_RBTREE=m
CONFIG_NFT_HASH=m CONFIG_NFT_SET_HASH=m
CONFIG_NFT_COUNTER=m CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m CONFIG_NFT_LIMIT=m
...@@ -101,8 +102,10 @@ CONFIG_NFT_MASQ=m ...@@ -101,8 +102,10 @@ CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m CONFIG_NFT_REJECT=m
CONFIG_NFT_COMPAT=m CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_DUP_NETDEV=m CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m CONFIG_NFT_FWD_NETDEV=m
CONFIG_NETFILTER_XT_SET=m CONFIG_NETFILTER_XT_SET=m
...@@ -346,6 +349,7 @@ CONFIG_MACSEC=m ...@@ -346,6 +349,7 @@ CONFIG_MACSEC=m
CONFIG_NETCONSOLE=m CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_VETH=m CONFIG_VETH=m
# CONFIG_NET_VENDOR_AMAZON is not set
# CONFIG_NET_VENDOR_ARC is not set # CONFIG_NET_VENDOR_ARC is not set
# CONFIG_NET_CADENCE is not set # CONFIG_NET_CADENCE is not set
# CONFIG_NET_VENDOR_BROADCOM is not set # CONFIG_NET_VENDOR_BROADCOM is not set
......
...@@ -93,9 +93,10 @@ CONFIG_NF_TABLES_INET=m ...@@ -93,9 +93,10 @@ CONFIG_NF_TABLES_INET=m
CONFIG_NF_TABLES_NETDEV=m CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m CONFIG_NFT_META=m
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m CONFIG_NFT_CT=m
CONFIG_NFT_RBTREE=m CONFIG_NFT_SET_RBTREE=m
CONFIG_NFT_HASH=m CONFIG_NFT_SET_HASH=m
CONFIG_NFT_COUNTER=m CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m CONFIG_NFT_LIMIT=m
...@@ -103,8 +104,10 @@ CONFIG_NFT_MASQ=m ...@@ -103,8 +104,10 @@ CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m CONFIG_NFT_REJECT=m
CONFIG_NFT_COMPAT=m CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_DUP_NETDEV=m CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m CONFIG_NFT_FWD_NETDEV=m
CONFIG_NETFILTER_XT_SET=m CONFIG_NETFILTER_XT_SET=m
...@@ -347,6 +350,7 @@ CONFIG_MACSEC=m ...@@ -347,6 +350,7 @@ CONFIG_MACSEC=m
CONFIG_NETCONSOLE=m CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_VETH=m CONFIG_VETH=m
# CONFIG_NET_VENDOR_AMAZON is not set
CONFIG_HPLANCE=y CONFIG_HPLANCE=y
# CONFIG_NET_VENDOR_ARC is not set # CONFIG_NET_VENDOR_ARC is not set
# CONFIG_NET_CADENCE is not set # CONFIG_NET_CADENCE is not set
......
...@@ -92,9 +92,10 @@ CONFIG_NF_TABLES_INET=m ...@@ -92,9 +92,10 @@ CONFIG_NF_TABLES_INET=m
CONFIG_NF_TABLES_NETDEV=m CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m CONFIG_NFT_META=m
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m CONFIG_NFT_CT=m
CONFIG_NFT_RBTREE=m CONFIG_NFT_SET_RBTREE=m
CONFIG_NFT_HASH=m CONFIG_NFT_SET_HASH=m
CONFIG_NFT_COUNTER=m CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m CONFIG_NFT_LIMIT=m
...@@ -102,8 +103,10 @@ CONFIG_NFT_MASQ=m ...@@ -102,8 +103,10 @@ CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m CONFIG_NFT_REJECT=m
CONFIG_NFT_COMPAT=m CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_DUP_NETDEV=m CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m CONFIG_NFT_FWD_NETDEV=m
CONFIG_NETFILTER_XT_SET=m CONFIG_NETFILTER_XT_SET=m
...@@ -363,6 +366,7 @@ CONFIG_MACSEC=m ...@@ -363,6 +366,7 @@ CONFIG_MACSEC=m
CONFIG_NETCONSOLE=m CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_VETH=m CONFIG_VETH=m
# CONFIG_NET_VENDOR_AMAZON is not set
CONFIG_MACMACE=y CONFIG_MACMACE=y
# CONFIG_NET_VENDOR_ARC is not set # CONFIG_NET_VENDOR_ARC is not set
# CONFIG_NET_CADENCE is not set # CONFIG_NET_CADENCE is not set
......
...@@ -102,9 +102,10 @@ CONFIG_NF_TABLES_INET=m ...@@ -102,9 +102,10 @@ CONFIG_NF_TABLES_INET=m
CONFIG_NF_TABLES_NETDEV=m CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m CONFIG_NFT_META=m
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m CONFIG_NFT_CT=m
CONFIG_NFT_RBTREE=m CONFIG_NFT_SET_RBTREE=m
CONFIG_NFT_HASH=m CONFIG_NFT_SET_HASH=m
CONFIG_NFT_COUNTER=m CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m CONFIG_NFT_LIMIT=m
...@@ -112,8 +113,10 @@ CONFIG_NFT_MASQ=m ...@@ -112,8 +113,10 @@ CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m CONFIG_NFT_REJECT=m
CONFIG_NFT_COMPAT=m CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_DUP_NETDEV=m CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m CONFIG_NFT_FWD_NETDEV=m
CONFIG_NETFILTER_XT_SET=m CONFIG_NETFILTER_XT_SET=m
...@@ -397,6 +400,7 @@ CONFIG_NETCONSOLE=m ...@@ -397,6 +400,7 @@ CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_VETH=m CONFIG_VETH=m
# CONFIG_NET_VENDOR_3COM is not set # CONFIG_NET_VENDOR_3COM is not set
# CONFIG_NET_VENDOR_AMAZON is not set
CONFIG_A2065=y CONFIG_A2065=y
CONFIG_ARIADNE=y CONFIG_ARIADNE=y
CONFIG_ATARILANCE=y CONFIG_ATARILANCE=y
......
...@@ -90,9 +90,10 @@ CONFIG_NF_TABLES_INET=m ...@@ -90,9 +90,10 @@ CONFIG_NF_TABLES_INET=m
CONFIG_NF_TABLES_NETDEV=m CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m CONFIG_NFT_META=m
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m CONFIG_NFT_CT=m
CONFIG_NFT_RBTREE=m CONFIG_NFT_SET_RBTREE=m
CONFIG_NFT_HASH=m CONFIG_NFT_SET_HASH=m
CONFIG_NFT_COUNTER=m CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m CONFIG_NFT_LIMIT=m
...@@ -100,8 +101,10 @@ CONFIG_NFT_MASQ=m ...@@ -100,8 +101,10 @@ CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m CONFIG_NFT_REJECT=m
CONFIG_NFT_COMPAT=m CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_DUP_NETDEV=m CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m CONFIG_NFT_FWD_NETDEV=m
CONFIG_NETFILTER_XT_SET=m CONFIG_NETFILTER_XT_SET=m
...@@ -345,6 +348,7 @@ CONFIG_MACSEC=m ...@@ -345,6 +348,7 @@ CONFIG_MACSEC=m
CONFIG_NETCONSOLE=m CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_VETH=m CONFIG_VETH=m
# CONFIG_NET_VENDOR_AMAZON is not set
CONFIG_MVME147_NET=y CONFIG_MVME147_NET=y
# CONFIG_NET_VENDOR_ARC is not set # CONFIG_NET_VENDOR_ARC is not set
# CONFIG_NET_CADENCE is not set # CONFIG_NET_CADENCE is not set
......
...@@ -91,9 +91,10 @@ CONFIG_NF_TABLES_INET=m ...@@ -91,9 +91,10 @@ CONFIG_NF_TABLES_INET=m
CONFIG_NF_TABLES_NETDEV=m CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m CONFIG_NFT_META=m
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m CONFIG_NFT_CT=m
CONFIG_NFT_RBTREE=m CONFIG_NFT_SET_RBTREE=m
CONFIG_NFT_HASH=m CONFIG_NFT_SET_HASH=m
CONFIG_NFT_COUNTER=m CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m CONFIG_NFT_LIMIT=m
...@@ -101,8 +102,10 @@ CONFIG_NFT_MASQ=m ...@@ -101,8 +102,10 @@ CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m CONFIG_NFT_REJECT=m
CONFIG_NFT_COMPAT=m CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_DUP_NETDEV=m CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m CONFIG_NFT_FWD_NETDEV=m
CONFIG_NETFILTER_XT_SET=m CONFIG_NETFILTER_XT_SET=m
...@@ -346,6 +349,7 @@ CONFIG_MACSEC=m ...@@ -346,6 +349,7 @@ CONFIG_MACSEC=m
CONFIG_NETCONSOLE=m CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_VETH=m CONFIG_VETH=m
# CONFIG_NET_VENDOR_AMAZON is not set
# CONFIG_NET_VENDOR_ARC is not set # CONFIG_NET_VENDOR_ARC is not set
# CONFIG_NET_CADENCE is not set # CONFIG_NET_CADENCE is not set
# CONFIG_NET_VENDOR_BROADCOM is not set # CONFIG_NET_VENDOR_BROADCOM is not set
......
...@@ -91,9 +91,10 @@ CONFIG_NF_TABLES_INET=m ...@@ -91,9 +91,10 @@ CONFIG_NF_TABLES_INET=m
CONFIG_NF_TABLES_NETDEV=m CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m CONFIG_NFT_META=m
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m CONFIG_NFT_CT=m
CONFIG_NFT_RBTREE=m CONFIG_NFT_SET_RBTREE=m
CONFIG_NFT_HASH=m CONFIG_NFT_SET_HASH=m
CONFIG_NFT_COUNTER=m CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m CONFIG_NFT_LIMIT=m
...@@ -101,8 +102,10 @@ CONFIG_NFT_MASQ=m ...@@ -101,8 +102,10 @@ CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m CONFIG_NFT_REJECT=m
CONFIG_NFT_COMPAT=m CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_DUP_NETDEV=m CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m CONFIG_NFT_FWD_NETDEV=m
CONFIG_NETFILTER_XT_SET=m CONFIG_NETFILTER_XT_SET=m
...@@ -353,6 +356,7 @@ CONFIG_NETCONSOLE=m ...@@ -353,6 +356,7 @@ CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_VETH=m CONFIG_VETH=m
# CONFIG_NET_VENDOR_3COM is not set # CONFIG_NET_VENDOR_3COM is not set
# CONFIG_NET_VENDOR_AMAZON is not set
# CONFIG_NET_VENDOR_AMD is not set # CONFIG_NET_VENDOR_AMD is not set
# CONFIG_NET_VENDOR_ARC is not set # CONFIG_NET_VENDOR_ARC is not set
# CONFIG_NET_CADENCE is not set # CONFIG_NET_CADENCE is not set
......
...@@ -88,9 +88,10 @@ CONFIG_NF_TABLES_INET=m ...@@ -88,9 +88,10 @@ CONFIG_NF_TABLES_INET=m
CONFIG_NF_TABLES_NETDEV=m CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m CONFIG_NFT_META=m
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m CONFIG_NFT_CT=m
CONFIG_NFT_RBTREE=m CONFIG_NFT_SET_RBTREE=m
CONFIG_NFT_HASH=m CONFIG_NFT_SET_HASH=m
CONFIG_NFT_COUNTER=m CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m CONFIG_NFT_LIMIT=m
...@@ -98,8 +99,10 @@ CONFIG_NFT_MASQ=m ...@@ -98,8 +99,10 @@ CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m CONFIG_NFT_REJECT=m
CONFIG_NFT_COMPAT=m CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_DUP_NETDEV=m CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m CONFIG_NFT_FWD_NETDEV=m
CONFIG_NETFILTER_XT_SET=m CONFIG_NETFILTER_XT_SET=m
...@@ -343,6 +346,7 @@ CONFIG_MACSEC=m ...@@ -343,6 +346,7 @@ CONFIG_MACSEC=m
CONFIG_NETCONSOLE=m CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_VETH=m CONFIG_VETH=m
# CONFIG_NET_VENDOR_AMAZON is not set
CONFIG_SUN3LANCE=y CONFIG_SUN3LANCE=y
# CONFIG_NET_VENDOR_ARC is not set # CONFIG_NET_VENDOR_ARC is not set
# CONFIG_NET_CADENCE is not set # CONFIG_NET_CADENCE is not set
......
...@@ -88,9 +88,10 @@ CONFIG_NF_TABLES_INET=m ...@@ -88,9 +88,10 @@ CONFIG_NF_TABLES_INET=m
CONFIG_NF_TABLES_NETDEV=m CONFIG_NF_TABLES_NETDEV=m
CONFIG_NFT_EXTHDR=m CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m CONFIG_NFT_META=m
CONFIG_NFT_NUMGEN=m
CONFIG_NFT_CT=m CONFIG_NFT_CT=m
CONFIG_NFT_RBTREE=m CONFIG_NFT_SET_RBTREE=m
CONFIG_NFT_HASH=m CONFIG_NFT_SET_HASH=m
CONFIG_NFT_COUNTER=m CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m CONFIG_NFT_LIMIT=m
...@@ -98,8 +99,10 @@ CONFIG_NFT_MASQ=m ...@@ -98,8 +99,10 @@ CONFIG_NFT_MASQ=m
CONFIG_NFT_REDIR=m CONFIG_NFT_REDIR=m
CONFIG_NFT_NAT=m CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m CONFIG_NFT_QUEUE=m
CONFIG_NFT_QUOTA=m
CONFIG_NFT_REJECT=m CONFIG_NFT_REJECT=m
CONFIG_NFT_COMPAT=m CONFIG_NFT_COMPAT=m
CONFIG_NFT_HASH=m
CONFIG_NFT_DUP_NETDEV=m CONFIG_NFT_DUP_NETDEV=m
CONFIG_NFT_FWD_NETDEV=m CONFIG_NFT_FWD_NETDEV=m
CONFIG_NETFILTER_XT_SET=m CONFIG_NETFILTER_XT_SET=m
...@@ -343,6 +346,7 @@ CONFIG_MACSEC=m ...@@ -343,6 +346,7 @@ CONFIG_MACSEC=m
CONFIG_NETCONSOLE=m CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_VETH=m CONFIG_VETH=m
# CONFIG_NET_VENDOR_AMAZON is not set
CONFIG_SUN3LANCE=y CONFIG_SUN3LANCE=y
# CONFIG_NET_VENDOR_ARC is not set # CONFIG_NET_VENDOR_ARC is not set
# CONFIG_NET_CADENCE is not set # CONFIG_NET_CADENCE is not set
......
...@@ -114,6 +114,6 @@ static inline void __udelay(unsigned long usecs) ...@@ -114,6 +114,6 @@ static inline void __udelay(unsigned long usecs)
*/ */
#define HZSCALE (268435456 / (1000000 / HZ)) #define HZSCALE (268435456 / (1000000 / HZ))
#define ndelay(n) __delay(DIV_ROUND_UP((n) * ((((HZSCALE) >> 11) * (loops_per_jiffy >> 11)) >> 6), 1000)); #define ndelay(n) __delay(DIV_ROUND_UP((n) * ((((HZSCALE) >> 11) * (loops_per_jiffy >> 11)) >> 6), 1000))
#endif /* defined(_M68K_DELAY_H) */ #endif /* defined(_M68K_DELAY_H) */
...@@ -214,6 +214,12 @@ ...@@ -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
*/ */
......
#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 @@ ...@@ -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 @@ static void __kprobes __do_page_fault(struct pt_regs *regs, unsigned long write, ...@@ -209,17 +209,18 @@ static void __kprobes __do_page_fault(struct pt_regs *regs, unsigned long write,
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) ...@@ -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) ...@@ -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) ...@@ -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, ...@@ -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, ...@@ -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 ...@@ -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
......
...@@ -65,9 +65,9 @@ static inline void purge_tlb_entries(struct mm_struct *mm, unsigned long addr) ...@@ -65,9 +65,9 @@ static inline void purge_tlb_entries(struct mm_struct *mm, unsigned long addr)
unsigned long flags; \ unsigned long flags; \
spin_lock_irqsave(&pa_tlb_lock, flags); \ spin_lock_irqsave(&pa_tlb_lock, flags); \
old_pte = *ptep; \ old_pte = *ptep; \
set_pte(ptep, pteval); \
if (pte_inserted(old_pte)) \ if (pte_inserted(old_pte)) \
purge_tlb_entries(mm, addr); \ purge_tlb_entries(mm, addr); \
set_pte(ptep, pteval); \
spin_unlock_irqrestore(&pa_tlb_lock, flags); \ spin_unlock_irqrestore(&pa_tlb_lock, flags); \
} while (0) } while (0)
...@@ -478,8 +478,8 @@ static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned ...@@ -478,8 +478,8 @@ static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned
spin_unlock_irqrestore(&pa_tlb_lock, flags); spin_unlock_irqrestore(&pa_tlb_lock, flags);
return 0; return 0;
} }
set_pte(ptep, pte_mkold(pte));
purge_tlb_entries(vma->vm_mm, addr); purge_tlb_entries(vma->vm_mm, addr);
set_pte(ptep, pte_mkold(pte));
spin_unlock_irqrestore(&pa_tlb_lock, flags); spin_unlock_irqrestore(&pa_tlb_lock, flags);
return 1; return 1;
} }
...@@ -492,9 +492,9 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, ...@@ -492,9 +492,9 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
spin_lock_irqsave(&pa_tlb_lock, flags); spin_lock_irqsave(&pa_tlb_lock, flags);
old_pte = *ptep; old_pte = *ptep;
set_pte(ptep, __pte(0));
if (pte_inserted(old_pte)) if (pte_inserted(old_pte))
purge_tlb_entries(mm, addr); purge_tlb_entries(mm, addr);
set_pte(ptep, __pte(0));
spin_unlock_irqrestore(&pa_tlb_lock, flags); spin_unlock_irqrestore(&pa_tlb_lock, flags);
return old_pte; return old_pte;
...@@ -504,8 +504,8 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, ...@@ -504,8 +504,8 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr,
{ {
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&pa_tlb_lock, flags); spin_lock_irqsave(&pa_tlb_lock, flags);
set_pte(ptep, pte_wrprotect(*ptep));
purge_tlb_entries(mm, addr); purge_tlb_entries(mm, addr);
set_pte(ptep, pte_wrprotect(*ptep));
spin_unlock_irqrestore(&pa_tlb_lock, flags); spin_unlock_irqrestore(&pa_tlb_lock, flags);
} }
......
...@@ -369,6 +369,7 @@ void __init parisc_setup_cache_timing(void) ...@@ -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,26 +383,30 @@ void __init parisc_setup_cache_timing(void) ...@@ -382,26 +383,30 @@ 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 */
/* On SMP machines, skip the TLB measure of kernel text which
* has been mapped as huge pages. */
if (num_online_cpus() > 1 && !parisc_requires_coherency()) {
threshold = max(cache_info.it_size, cache_info.dt_size);
threshold *= PAGE_SIZE;
threshold /= num_online_cpus();
goto set_tlb_threshold;
}
alltime = mfctl(16); alltime = mfctl(16);
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 +419,12 @@ void __init parisc_setup_cache_timing(void) ...@@ -414,13 +419,12 @@ 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();
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", set_tlb_threshold:
if (threshold)
parisc_tlb_flush_threshold = threshold;
printk(KERN_INFO "TLB flush threshold set to %lu KiB\n",
parisc_tlb_flush_threshold/1024); parisc_tlb_flush_threshold/1024);
} }
......
...@@ -58,7 +58,7 @@ void __init setup_pdc(void) ...@@ -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) ...@@ -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) ...@@ -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 */ ...@@ -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 */ ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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
...@@ -892,19 +892,10 @@ ENTRY_CFI(flush_dcache_page_asm) ...@@ -892,19 +892,10 @@ ENTRY_CFI(flush_dcache_page_asm)
fdc,m r31(%r28) fdc,m r31(%r28)
fdc,m r31(%r28) fdc,m r31(%r28)
fdc,m r31(%r28) fdc,m r31(%r28)
cmpb,COND(<<) %r28, %r25,1b cmpb,COND(<<) %r28, %r25,1b
fdc,m r31(%r28) fdc,m r31(%r28)
sync sync
#ifdef CONFIG_PA20
pdtlb,l 0(%r25)
#else
tlb_lock %r20,%r21,%r22
pdtlb 0(%r25)
tlb_unlock %r20,%r21,%r22
#endif
bv %r0(%r2) bv %r0(%r2)
nop nop
.exit .exit
...@@ -931,13 +922,18 @@ ENTRY_CFI(flush_icache_page_asm) ...@@ -931,13 +922,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
...@@ -974,15 +970,6 @@ ENTRY_CFI(flush_icache_page_asm) ...@@ -974,15 +970,6 @@ ENTRY_CFI(flush_icache_page_asm)
fic,m %r31(%sr4,%r28) fic,m %r31(%sr4,%r28)
sync sync
#ifdef CONFIG_PA20
pitlb,l %r0(%sr4,%r25)
#else
tlb_lock %r20,%r21,%r22
pitlb (%sr4,%r25)
tlb_unlock %r20,%r21,%r22
#endif
bv %r0(%r2) bv %r0(%r2)
nop nop
.exit .exit
......
...@@ -95,8 +95,8 @@ static inline int map_pte_uncached(pte_t * pte, ...@@ -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) ...@@ -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 @@ ...@@ -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 @@ ...@@ -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) ...@@ -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); ...@@ -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) ...@@ -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) ...@@ -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);
} }
...@@ -100,7 +100,8 @@ src-wlib-y := string.S crt0.S crtsavres.S stdio.c decompress.c main.c \ ...@@ -100,7 +100,8 @@ src-wlib-y := string.S crt0.S crtsavres.S stdio.c decompress.c main.c \
ns16550.c serial.c simple_alloc.c div64.S util.S \ ns16550.c serial.c simple_alloc.c div64.S util.S \
elf_util.c $(zlib-y) devtree.c stdlib.c \ elf_util.c $(zlib-y) devtree.c stdlib.c \
oflib.c ofconsole.c cuboot.c mpsc.c cpm-serial.c \ oflib.c ofconsole.c cuboot.c mpsc.c cpm-serial.c \
uartlite.c mpc52xx-psc.c opal.c opal-calls.S uartlite.c mpc52xx-psc.c opal.c
src-wlib-$(CONFIG_PPC64_BOOT_WRAPPER) += opal-calls.S
src-wlib-$(CONFIG_40x) += 4xx.c planetcore.c src-wlib-$(CONFIG_40x) += 4xx.c planetcore.c
src-wlib-$(CONFIG_44x) += 4xx.c ebony.c bamboo.c src-wlib-$(CONFIG_44x) += 4xx.c ebony.c bamboo.c
src-wlib-$(CONFIG_8xx) += mpc8xx.c planetcore.c fsl-soc.c src-wlib-$(CONFIG_8xx) += mpc8xx.c planetcore.c fsl-soc.c
......
...@@ -232,8 +232,12 @@ void start(void) ...@@ -232,8 +232,12 @@ void start(void)
console_ops.close(); console_ops.close();
kentry = (kernel_entry_t) vmlinux.addr; kentry = (kernel_entry_t) vmlinux.addr;
if (ft_addr) if (ft_addr) {
kentry(ft_addr, 0, NULL); if(platform_ops.kentry)
platform_ops.kentry(ft_addr, vmlinux.addr);
else
kentry(ft_addr, 0, NULL);
}
else else
kentry((unsigned long)initrd.addr, initrd.size, kentry((unsigned long)initrd.addr, initrd.size,
loader_info.promptr); loader_info.promptr);
......
...@@ -12,6 +12,19 @@ ...@@ -12,6 +12,19 @@
.text .text
.globl opal_kentry
opal_kentry:
/* r3 is the fdt ptr */
mtctr r4
li r4, 0
li r5, 0
li r6, 0
li r7, 0
ld r11,opal@got(r2)
ld r8,0(r11)
ld r9,8(r11)
bctr
#define OPAL_CALL(name, token) \ #define OPAL_CALL(name, token) \
.globl name; \ .globl name; \
name: \ name: \
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
#include <libfdt.h> #include <libfdt.h>
#include "../include/asm/opal-api.h" #include "../include/asm/opal-api.h"
#ifdef __powerpc64__ #ifdef CONFIG_PPC64_BOOT_WRAPPER
/* Global OPAL struct used by opal-call.S */ /* Global OPAL struct used by opal-call.S */
struct opal { struct opal {
...@@ -23,14 +23,25 @@ struct opal { ...@@ -23,14 +23,25 @@ struct opal {
static u32 opal_con_id; static u32 opal_con_id;
/* see opal-wrappers.S */
int64_t opal_console_write(int64_t term_number, u64 *length, const u8 *buffer); int64_t opal_console_write(int64_t term_number, u64 *length, const u8 *buffer);
int64_t opal_console_read(int64_t term_number, uint64_t *length, u8 *buffer); int64_t opal_console_read(int64_t term_number, uint64_t *length, u8 *buffer);
int64_t opal_console_write_buffer_space(uint64_t term_number, uint64_t *length); int64_t opal_console_write_buffer_space(uint64_t term_number, uint64_t *length);
int64_t opal_console_flush(uint64_t term_number); int64_t opal_console_flush(uint64_t term_number);
int64_t opal_poll_events(uint64_t *outstanding_event_mask); int64_t opal_poll_events(uint64_t *outstanding_event_mask);
void opal_kentry(unsigned long fdt_addr, void *vmlinux_addr);
static int opal_con_open(void) static int opal_con_open(void)
{ {
/*
* When OPAL loads the boot kernel it stashes the OPAL base and entry
* address in r8 and r9 so the kernel can use the OPAL console
* before unflattening the devicetree. While executing the wrapper will
* probably trash r8 and r9 so this kentry hook restores them before
* entering the decompressed kernel.
*/
platform_ops.kentry = opal_kentry;
return 0; return 0;
} }
......
...@@ -30,6 +30,7 @@ struct platform_ops { ...@@ -30,6 +30,7 @@ struct platform_ops {
void * (*realloc)(void *ptr, unsigned long size); void * (*realloc)(void *ptr, unsigned long size);
void (*exit)(void); void (*exit)(void);
void * (*vmlinux_alloc)(unsigned long size); void * (*vmlinux_alloc)(unsigned long size);
void (*kentry)(unsigned long fdt_addr, void *vmlinux_addr);
}; };
extern struct platform_ops platform_ops; extern struct platform_ops platform_ops;
......
...@@ -14,6 +14,10 @@ ...@@ -14,6 +14,10 @@
#include <linux/threads.h> #include <linux/threads.h>
#include <linux/kprobes.h> #include <linux/kprobes.h>
#include <asm/cacheflush.h>
#include <asm/checksum.h>
#include <asm/uaccess.h>
#include <asm/epapr_hcalls.h>
#include <uapi/asm/ucontext.h> #include <uapi/asm/ucontext.h>
...@@ -109,4 +113,12 @@ void early_setup_secondary(void); ...@@ -109,4 +113,12 @@ void early_setup_secondary(void);
/* time */ /* time */
void accumulate_stolen_time(void); void accumulate_stolen_time(void);
/* misc runtime */
extern u64 __bswapdi2(u64);
extern s64 __lshrdi3(s64, int);
extern s64 __ashldi3(s64, int);
extern s64 __ashrdi3(s64, int);
extern int __cmpdi2(s64, s64);
extern int __ucmpdi2(u64, u64);
#endif /* _ASM_POWERPC_ASM_PROTOTYPES_H */ #endif /* _ASM_POWERPC_ASM_PROTOTYPES_H */
...@@ -28,6 +28,12 @@ ...@@ -28,6 +28,12 @@
* Individual features below. * Individual features below.
*/ */
/*
* Kernel read only support.
* We added the ppp value 0b110 in ISA 2.04.
*/
#define MMU_FTR_KERNEL_RO ASM_CONST(0x00004000)
/* /*
* We need to clear top 16bits of va (from the remaining 64 bits )in * We need to clear top 16bits of va (from the remaining 64 bits )in
* tlbie* instructions * tlbie* instructions
...@@ -103,10 +109,10 @@ ...@@ -103,10 +109,10 @@
#define MMU_FTRS_POWER4 MMU_FTRS_DEFAULT_HPTE_ARCH_V2 #define MMU_FTRS_POWER4 MMU_FTRS_DEFAULT_HPTE_ARCH_V2
#define MMU_FTRS_PPC970 MMU_FTRS_POWER4 | MMU_FTR_TLBIE_CROP_VA #define MMU_FTRS_PPC970 MMU_FTRS_POWER4 | MMU_FTR_TLBIE_CROP_VA
#define MMU_FTRS_POWER5 MMU_FTRS_POWER4 | MMU_FTR_LOCKLESS_TLBIE #define MMU_FTRS_POWER5 MMU_FTRS_POWER4 | MMU_FTR_LOCKLESS_TLBIE
#define MMU_FTRS_POWER6 MMU_FTRS_POWER4 | MMU_FTR_LOCKLESS_TLBIE #define MMU_FTRS_POWER6 MMU_FTRS_POWER4 | MMU_FTR_LOCKLESS_TLBIE | MMU_FTR_KERNEL_RO
#define MMU_FTRS_POWER7 MMU_FTRS_POWER4 | MMU_FTR_LOCKLESS_TLBIE #define MMU_FTRS_POWER7 MMU_FTRS_POWER4 | MMU_FTR_LOCKLESS_TLBIE | MMU_FTR_KERNEL_RO
#define MMU_FTRS_POWER8 MMU_FTRS_POWER4 | MMU_FTR_LOCKLESS_TLBIE #define MMU_FTRS_POWER8 MMU_FTRS_POWER4 | MMU_FTR_LOCKLESS_TLBIE | MMU_FTR_KERNEL_RO
#define MMU_FTRS_POWER9 MMU_FTRS_POWER4 | MMU_FTR_LOCKLESS_TLBIE #define MMU_FTRS_POWER9 MMU_FTRS_POWER4 | MMU_FTR_LOCKLESS_TLBIE | MMU_FTR_KERNEL_RO
#define MMU_FTRS_CELL MMU_FTRS_DEFAULT_HPTE_ARCH_V2 | \ #define MMU_FTRS_CELL MMU_FTRS_DEFAULT_HPTE_ARCH_V2 | \
MMU_FTR_CI_LARGE_PAGE MMU_FTR_CI_LARGE_PAGE
#define MMU_FTRS_PA6T MMU_FTRS_DEFAULT_HPTE_ARCH_V2 | \ #define MMU_FTRS_PA6T MMU_FTRS_DEFAULT_HPTE_ARCH_V2 | \
......
...@@ -355,6 +355,7 @@ ...@@ -355,6 +355,7 @@
#define LPCR_PECE0 ASM_CONST(0x0000000000004000) /* ext. exceptions can cause exit */ #define LPCR_PECE0 ASM_CONST(0x0000000000004000) /* ext. exceptions can cause exit */
#define LPCR_PECE1 ASM_CONST(0x0000000000002000) /* decrementer can cause exit */ #define LPCR_PECE1 ASM_CONST(0x0000000000002000) /* decrementer can cause exit */
#define LPCR_PECE2 ASM_CONST(0x0000000000001000) /* machine check etc can cause exit */ #define LPCR_PECE2 ASM_CONST(0x0000000000001000) /* machine check etc can cause exit */
#define LPCR_PECE_HVEE ASM_CONST(0x0000400000000000) /* P9 Wakeup on HV interrupts */
#define LPCR_MER ASM_CONST(0x0000000000000800) /* Mediated External Exception */ #define LPCR_MER ASM_CONST(0x0000000000000800) /* Mediated External Exception */
#define LPCR_MER_SH 11 #define LPCR_MER_SH 11
#define LPCR_TC ASM_CONST(0x0000000000000200) /* Translation control */ #define LPCR_TC ASM_CONST(0x0000000000000200) /* Translation control */
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册