Russell King
87067a935a
ARM: Optimize multi-CPU tlb flushing a little more
...
The compiler does not conditionalize the assembly instructions for
the tlb operations, which leads to sub-optimal code being generated
when building a kernel for multiple CPUs.
We can tweak things fairly simply as the code fragment below shows:
17f8: e3120001 tst r2, #1 ; 0x1
...
1800: 0a000000 beq 1808 <handle_pte_fault+0x194>
1804: ee061f10 mcr 15, 0, r1, cr6, cr0, {0}
1808: e3120004 tst r2, #4 ; 0x4
180c: 0a000000 beq 1814 <handle_pte_fault+0x1a0>
1810: ee081f36 mcr 15, 0, r1, cr8, cr6, {1}
becomes:
17f0: e3120001 tst r2, #1 ; 0x1
17f4: 1e063f10 mcrne 15, 0, r3, cr6, cr0, {0}
17f8: e3120004 tst r2, #4 ; 0x4
17fc: 1e083f36 mcrne 15, 0, r3, cr8, cr6, {1}
Overall, for Realview with V6 and V7 CPUs configured:
text data bss dec hex filename
4153998 207340 5371036 9732374 948116 ../build/realview/vmlinux.before
4153366 207332 5371036 9731734 947e96 ../build/realview/vmlinux.after
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2012-03-24 09:38:52 +00:00
..
2012-01-05 13:25:27 +00:00
2012-01-11 18:50:26 -08:00
2011-03-10 15:16:29 +00:00
2009-02-01 11:01:22 +05:30
2009-12-12 13:08:14 +01:00
2011-12-08 10:30:38 +00:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:46 -07:00
2012-01-05 13:23:22 +00:00
2009-01-14 19:56:50 -08:00
2010-12-05 08:39:36 +00:00
2011-03-16 23:35:26 +00:00
2011-10-17 09:13:41 +01:00
2011-07-19 18:09:45 +02:00
2012-03-24 09:38:51 +00:00
2010-01-10 13:03:52 +00:00
2011-10-17 09:02:43 +01:00
2011-12-02 15:16:33 +00:00
2011-11-01 20:11:00 -07:00
2008-10-23 12:53:32 +01:00
2011-10-28 12:02:27 -07:00
2011-09-13 11:12:14 +02:00
2010-11-04 15:44:31 +00:00
2011-08-17 08:44:16 +01:00
2011-12-11 08:35:50 +00:00
2012-03-24 09:38:51 +00:00
2011-10-23 13:32:29 +01:00
2011-10-17 09:02:44 +01:00
2011-05-26 10:31:06 +01:00
2009-03-15 21:01:20 -04:00
2009-05-29 08:40:02 -07:00
2008-08-07 09:55:48 +01:00
2011-01-27 11:48:58 +00:00
2011-03-31 11:26:23 -03:00
2010-09-02 15:28:43 +01:00
2011-09-26 12:36:47 +01:00
2011-03-31 11:26:23 -03:00
2011-02-12 11:52:21 +00:00
2011-02-12 11:52:21 +00:00
2011-03-16 23:35:26 +00:00
2011-03-31 11:26:23 -03:00
2012-01-08 09:27:19 +00:00
2011-12-06 11:14:01 +00:00
2011-02-23 17:24:17 +00:00
2011-08-31 10:42:48 +01:00
2011-03-29 14:47:57 +02:00
2011-12-13 15:07:49 +00:00
2011-12-06 14:04:15 +00:00
2011-11-28 21:13:06 +02:00
2010-10-22 10:19:59 -07:00
2012-01-03 22:55:18 -05:00
2011-07-12 19:42:40 +08:00
2010-10-07 14:08:55 +01:00
2011-10-17 09:12:40 +01:00
2011-03-03 16:26:55 -05:00
2010-10-29 13:14:40 -05:00
2010-05-20 21:04:21 -05:00
2012-01-17 16:17:01 -05:00
2011-10-31 14:08:10 +01:00
2009-12-12 13:08:14 +01:00
2008-09-06 12:10:45 +01:00
2012-01-13 15:02:35 +00:00
2011-10-13 12:53:53 -04:00
2009-12-11 06:34:09 -05:00
2012-03-24 09:38:51 +00:00
2011-09-13 11:12:14 +02:00
2011-08-13 11:26:40 +01:00
2008-12-14 13:22:51 +00:00
2012-03-24 09:38:51 +00:00
2011-10-17 09:11:51 +01:00
2009-07-24 12:35:01 +01:00
2012-03-24 09:38:51 +00:00
2012-01-06 12:10:36 -08:00
2011-12-02 15:16:25 +00:00
2011-12-08 10:30:39 +00:00
2011-10-06 15:40:06 +01:00
2011-10-06 15:40:05 +01:00
2011-12-08 10:30:37 +00:00
2011-12-08 10:30:39 +00:00
2011-12-08 10:30:39 +00:00
2011-12-08 10:30:39 +00:00
2011-12-08 10:30:39 +00:00
2010-03-13 10:48:22 +00:00
2012-01-05 13:24:33 +00:00
2011-12-02 15:16:33 +00:00
2011-12-08 10:30:39 +00:00
2011-12-06 11:15:25 +00:00
2012-01-04 23:47:52 -07:00
2012-01-17 16:17:01 -05:00
2011-06-02 11:16:22 +01:00
2011-12-18 23:00:26 +00:00
2010-10-01 22:32:18 -04:00
2011-12-13 08:52:02 +00:00
2009-06-11 21:01:52 +02:00
2010-10-18 22:34:25 +01:00
2011-02-11 12:29:18 +00:00
2011-10-23 13:32:33 +01:00
2011-10-23 13:32:29 +01:00
2011-11-09 16:01:02 -05:00
2008-10-01 17:24:04 +01:00
2009-12-14 23:55:32 +01:00
2011-05-23 17:19:26 +01:00
2010-06-14 21:31:00 -04:00
2009-02-12 13:21:17 +00:00
2008-09-04 09:46:11 +01:00
2008-11-27 12:37:59 +00:00
2011-09-20 23:33:36 +01:00
2012-01-14 18:03:30 -08:00
2012-03-24 09:38:51 +00:00
2011-07-06 20:49:45 +01:00
2010-08-10 13:47:39 -07:00
2012-01-17 16:17:01 -05:00
2011-04-10 21:13:36 +01:00
2008-08-07 09:55:48 +01:00
2011-12-08 10:30:40 +00:00
2012-03-24 09:38:52 +00:00
2011-02-02 21:23:29 +00:00
2011-11-30 23:55:21 +00:00
2012-01-23 10:24:11 +00:00
2012-01-03 22:55:17 -05:00
2010-11-04 15:44:31 +00:00
2011-03-31 11:26:23 -03:00
2012-01-16 08:56:25 -06:00
2011-12-13 15:07:49 +00:00
2011-12-06 11:16:13 +00:00
2011-03-10 15:16:29 +00:00
2010-07-09 14:41:34 +01:00
2011-07-12 11:19:29 -05:00