/* * Copyright 2015, Cyril Bur, IBM Corp. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #include "basic_asm.h" #include "fpu_asm.h" FUNC_START(check_fpu) mr r4,r3 li r3,1 # assume a bad result lfd f0,0(r4) fcmpu cr1,f0,f14 bne cr1,1f lfd f0,8(r4) fcmpu cr1,f0,f15 bne cr1,1f lfd f0,16(r4) fcmpu cr1,f0,f16 bne cr1,1f lfd f0,24(r4) fcmpu cr1,f0,f17 bne cr1,1f lfd f0,32(r4) fcmpu cr1,f0,f18 bne cr1,1f lfd f0,40(r4) fcmpu cr1,f0,f19 bne cr1,1f lfd f0,48(r4) fcmpu cr1,f0,f20 bne cr1,1f lfd f0,56(r4) fcmpu cr1,f0,f21 bne cr1,1f lfd f0,64(r4) fcmpu cr1,f0,f22 bne cr1,1f lfd f0,72(r4) fcmpu cr1,f0,f23 bne cr1,1f lfd f0,80(r4) fcmpu cr1,f0,f24 bne cr1,1f lfd f0,88(r4) fcmpu cr1,f0,f25 bne cr1,1f lfd f0,96(r4) fcmpu cr1,f0,f26 bne cr1,1f lfd f0,104(r4) fcmpu cr1,f0,f27 bne cr1,1f lfd f0,112(r4) fcmpu cr1,f0,f28 bne cr1,1f lfd f0,120(r4) fcmpu cr1,f0,f29 bne cr1,1f lfd f0,128(r4) fcmpu cr1,f0,f30 bne cr1,1f lfd f0,136(r4) fcmpu cr1,f0,f31 bne cr1,1f li r3,0 # Success!!! 1: blr FUNC_START(test_fpu) # r3 holds pointer to where to put the result of fork # r4 holds pointer to the pid # f14-f31 are non volatiles PUSH_BASIC_STACK(256) PUSH_FPU(256) std r3,STACK_FRAME_PARAM(0)(sp) # Address of darray std r4,STACK_FRAME_PARAM(1)(sp) # Address of pid bl load_fpu nop li r0,__NR_fork sc # pass the result of the fork to the caller ld r9,STACK_FRAME_PARAM(1)(sp) std r3,0(r9) ld r3,STACK_FRAME_PARAM(0)(sp) bl check_fpu nop POP_FPU(256) POP_BASIC_STACK(256) blr FUNC_END(test_fpu) # int preempt_fpu(double *darray, int *threads_running, int *running) # On starting will (atomically) decrement not_ready as a signal that the FPU # has been loaded with darray. Will proceed to check the validity of the FPU # registers while running is not zero. FUNC_START(preempt_fpu) PUSH_BASIC_STACK(256) PUSH_FPU(256) std r3,STACK_FRAME_PARAM(0)(sp) # double *darray std r4,STACK_FRAME_PARAM(1)(sp) # int *threads_starting std r5,STACK_FRAME_PARAM(2)(sp) # int *running bl load_fpu nop sync # Atomic DEC ld r3,STACK_FRAME_PARAM(1)(sp) 1: lwarx r4,0,r3 addi r4,r4,-1 stwcx. r4,0,r3 bne- 1b 2: ld r3,STACK_FRAME_PARAM(0)(sp) bl check_fpu nop cmpdi r3,0 bne 3f ld r4,STACK_FRAME_PARAM(2)(sp) ld r5,0(r4) cmpwi r5,0 bne 2b 3: POP_FPU(256) POP_BASIC_STACK(256) blr FUNC_END(preempt_fpu) ct name='qt'>
path: root/tools/usb/ffs-aio-example
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-12-20 15:48:34 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2016-12-20 15:48:34 -0800
commitba6d973f78eb62ffebb32f6ef3334fc9a3b33d22 (patch)
tree81b4e19de7308ce46ac7d0f670302906a906f0d0 /tools/usb/ffs-aio-example
parent3eb86259eca6a363ed7bb13ecea5cda809f7b97d (diff)
parenta763f78cea845c91b8d91f93dabf70c407635dc5 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes and cleanups from David Miller: 1) Use rb_entry() instead of hardcoded container_of(), from Geliang Tang. 2) Use correct memory barriers in stammac driver, from Pavel Machek. 3) Fix assoc bind address handling in SCTP, from Xin Long. 4) Make the length check for UFO handling consistent between __ip_append_data() and ip_finish_output(), from Zheng Li. 5) HSI driver compatible strings were busted fro hix5hd2, from Dongpo Li. 6) Handle devm_ioremap() errors properly in cavium driver, from Arvind Yadav. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (22 commits) RDS: use rb_entry() net_sched: sch_netem: use rb_entry() net_sched: sch_fq: use rb_entry() net/mlx5: use rb_entry() ethernet: sfc: Add Kconfig entry for vendor Solarflare sctp: not copying duplicate addrs to the assoc's bind address list sctp: reduce indent level in sctp_copy_local_addr_list ARM: dts: hix5hd2: don't change the existing compatible string net: hix5hd2_gmac: fix compatible strings name openvswitch: Add a missing break statement. net: netcp: ethss: fix 10gbe host port tx pri map configuration net: netcp: ethss: fix errors in ethtool ops fsl/fman: enable compilation on ARM64 fsl/fman: A007273 only applies to PPC SoCs powerpc: fsl/fman: remove fsl,fman from of_device_ids[] fsl/fman: fix 1G support for QSGMII interfaces dt: bindings: net: use boolean dt properties for eee broken modes net: phy: use boolean dt properties for eee broken modes net: phy: fix sign type error in genphy_config_eee_advert ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output ...
Diffstat (limited to 'tools/usb/ffs-aio-example')