Anton Blanchard
a6cf7ed511
powerpc/atomic: Implement atomic*_inc_not_zero
...
Implement atomic_inc_not_zero and atomic64_inc_not_zero. At the
moment we use atomic*_add_unless which requires us to put 0 and
1 constants into registers. We can also avoid a subtract by
saving the original value in a second temporary.
This removes 3 instructions from fget:
- c0000000001b63c0: 39 00 00 00 li r8,0
- c0000000001b63c4: 39 40 00 01 li r10,1
...
- c0000000001b63e8: 7c 0a 00 50 subf r0,r10,r0
Signed-off-by: Anton Blanchard <anton@samba.org >
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org >
2012-03-07 17:06:08 +11:00
..
2011-04-21 16:59:30 -07:00
2010-08-04 10:26:03 +10:00
2010-06-22 19:40:29 +10:00
2012-03-07 17:06:08 +11:00
2011-11-17 16:26:07 +11:00
2010-05-19 08:36:48 +01:00
2010-06-01 08:55:52 -07:00
2010-09-02 14:07:30 +10:00
2011-10-28 14:58:53 +02:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-12-19 14:40:40 +11:00
2011-05-04 15:22:59 +10:00
2012-01-06 17:58:22 -08:00
2011-06-20 11:21:48 +10:00
2011-09-20 09:19:35 +10:00
2011-09-20 09:19:35 +10:00
2011-06-27 08:30:26 -05:00
2011-07-21 14:10:00 +02:00
2011-07-26 16:49:47 -07:00
2011-06-27 08:30:19 -05:00
2011-06-29 17:47:48 +10:00
2011-07-12 13:16:59 +03:00
2012-02-23 10:50:02 +11:00
2011-05-04 15:19:26 +10:00
2011-09-20 16:09:50 +10:00
2011-11-08 14:51:46 +11:00
2010-10-14 00:54:38 -05:00
2010-08-12 14:00:15 +01:00
2011-06-27 08:30:19 -05:00
2012-01-04 15:41:22 -06:00
2011-11-24 02:01:40 -06:00
2011-05-26 13:38:57 +10:00
2011-11-17 16:26:07 +11:00
2010-10-26 16:52:08 -07:00
2011-12-07 16:26:24 +11:00
2011-07-12 13:16:55 +03:00
2011-07-01 13:10:21 +10:00
2011-07-01 16:20:04 +02:00
2011-03-02 16:50:24 +11:00
2010-10-18 11:03:21 +02:00
2011-01-12 18:02:46 -06:00
2011-05-06 13:19:01 +10:00
2011-04-27 14:18:31 +10:00
2011-12-02 14:57:31 +01:00
2011-02-17 14:16:30 -08:00
2011-07-26 16:49:47 -07:00
2011-01-21 14:08:33 +11:00
2011-08-05 14:47:55 +10:00
2011-12-16 14:39:48 +11:00
2011-12-20 10:20:19 -05:00
2011-12-08 14:02:23 +11:00
2011-12-02 14:57:31 +01:00
2010-10-29 13:14:42 -05:00
2010-05-20 21:04:21 -05:00
2011-03-31 11:26:23 -03:00
2011-05-22 08:47:53 -04:00
2011-07-12 13:16:54 +03:00
2011-12-26 13:28:00 +02:00
2011-09-25 19:52:30 +03:00
2011-12-26 13:28:00 +02:00
2011-07-12 13:16:54 +03:00
2011-07-12 13:16:39 +03:00
2010-09-02 14:07:32 +10:00
2011-09-25 19:52:30 +03:00
2010-10-24 10:52:23 +02:00
2011-09-25 19:52:27 +03:00
2011-12-27 11:26:43 +02:00
2010-06-09 11:12:36 +02:00
2011-07-26 16:49:47 -07:00
2011-05-19 14:30:41 +10:00
2011-12-08 14:05:55 +11:00
2011-11-25 14:32:53 +11:00
2011-06-10 14:55:36 +02:00
2011-05-04 15:19:26 +10:00
2011-12-07 16:26:24 +11:00
2011-12-19 14:41:22 +11:00
2011-09-20 09:19:40 +10:00
2011-06-27 14:13:09 -07:00
2010-08-06 20:49:18 -06:00
2010-08-06 20:49:18 -06:00
2010-08-01 17:06:44 -06:00
2012-02-23 10:50:00 +11:00
2011-03-04 18:19:04 +11:00
2011-12-07 18:02:02 +11:00
2011-12-08 14:22:53 +11:00
2010-08-11 08:59:21 -07:00
2011-12-07 16:26:21 +11:00
2011-12-20 10:21:34 -05:00
2011-03-31 11:26:23 -03:00
2012-01-11 18:50:26 -08:00
2012-01-11 18:50:26 -08:00
2010-07-09 11:28:30 +10:00
2010-06-08 23:31:27 +02:00
2011-05-25 08:39:16 -07:00
2010-10-26 16:52:08 -07:00
2011-06-29 17:48:16 +10:00
2011-11-25 14:32:52 +11:00
2011-03-31 11:26:23 -03:00
2011-07-12 13:16:31 +03:00
2011-07-21 12:38:32 -07:00
2012-02-14 15:01:39 +11:00
2011-12-08 13:57:34 +11:00
2011-07-26 16:49:47 -07:00
2011-06-29 17:48:22 +10:00
2011-09-20 09:19:40 +10:00
2011-04-18 13:08:21 +10:00
2011-05-10 10:16:21 +02:00
2012-02-14 15:01:38 +11:00
2011-03-30 15:38:02 +02:00
2011-09-27 18:08:04 +02:00
2011-05-06 13:32:41 +10:00
2011-11-25 14:11:28 +11:00
2011-12-09 07:51:02 -05:00
2011-06-02 15:29:08 -05:00
2011-12-08 14:22:52 +11:00
2010-08-07 18:15:50 +02:00
2011-04-20 17:01:19 +10:00
2011-11-16 14:47:54 +11:00
2011-07-01 13:00:21 +10:00
2010-05-26 08:30:15 -07:00
2011-09-20 15:53:24 +10:00
2011-07-21 14:10:00 +02:00
2011-11-09 16:01:02 -05:00
2011-09-20 15:53:23 +10:00
2011-03-31 11:26:23 -03:00
2012-01-08 12:19:57 -08:00
2011-11-17 16:26:07 +11:00
2011-05-26 13:38:57 +10:00
2011-10-31 17:30:44 -07:00
2011-12-16 11:09:21 +11:00
2011-11-25 14:32:57 +11:00
2010-08-10 13:47:39 -07:00
2011-11-21 12:32:25 -08:00
2011-11-25 14:11:26 +11:00
2011-05-25 08:39:16 -07:00
2011-04-20 16:59:20 +10:00
2011-12-21 14:29:42 -08:00
2012-01-08 12:19:57 -08:00
2011-11-06 17:12:03 -08:00
2011-04-26 23:31:11 -07:00
2011-10-31 17:30:44 -07:00
2011-03-31 11:26:23 -03:00
2011-05-06 13:32:35 +10:00
2011-11-08 14:51:46 +11:00