summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures
diff options
context:
space:
mode:
authorDouglas Gilbert <dgilbert@us.ibm.com>2018-08-15 10:35:47 -0500
committerSachin Gupta <sgupta2m@in.ibm.com>2018-08-23 22:20:20 -0500
commitef27d8bc4244e3e08cddd324ac5d27c9837f01ff (patch)
treee76d6785bf6be125983b4ff1e205b9bfdbc34b59 /src/import/chips/p9/procedures
parentd436cbc3c974610c1264c3c213e8cbed3c51b07f (diff)
downloadtalos-sbe-ef27d8bc4244e3e08cddd324ac5d27c9837f01ff.tar.gz
talos-sbe-ef27d8bc4244e3e08cddd324ac5d27c9837f01ff.zip
HCODE Make divide using DERP/DORP atomic
Change-Id: Ib7e1c88f7ac934ba551082f27231fff1bb3961dc CQ: SW443103 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/64570 Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com> Reviewed-by: RAHUL BATRA <rbatra@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/64578 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures')
-rw-r--r--src/import/chips/p9/procedures/ppe/pk/ppe42/math.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/import/chips/p9/procedures/ppe/pk/ppe42/math.c b/src/import/chips/p9/procedures/ppe/pk/ppe42/math.c
index ba3b9ae3..7324da7a 100644
--- a/src/import/chips/p9/procedures/ppe/pk/ppe42/math.c
+++ b/src/import/chips/p9/procedures/ppe/pk/ppe42/math.c
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER sbe Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2016,2017 */
+/* Contributors Listed Below - COPYRIGHT 2016,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -23,6 +23,8 @@
/* */
/* IBM_PROLOG_END_TAG */
#include "ppe42math.h"
+#include "ppe42_msr.h"
+#include <stdint.h>
#ifdef __cplusplus
extern "C"
@@ -71,6 +73,8 @@ unsigned long udivmodsi4(unsigned long long _a,
unsigned long _mod)
{
+ uint32_t ctx = mfmsr();
+ wrteei(0);
out64(OCB_DERP, _a);
do
@@ -79,6 +83,8 @@ unsigned long udivmodsi4(unsigned long long _a,
}
while((~_a) == 0);
+ mtmsr(ctx);
+
if(_mod)
{
return (unsigned long)_a;
OpenPOWER on IntegriCloud