Ard Biesheuvel
60699ba18b
arm64: head.S: use ordinary stack frame for __primary_switched()
...
Instead of stashing the value of the link register in x28 before setting
up the stack and calling into C code, create an ordinary PCS compatible
stack frame so that we can push the return address onto the stack.
Since exception handlers require a stack as well, assign the stack pointer
register before installing the vector table.
Note that this accounts for the difference between THREAD_START_SP and
THREAD_SIZE, given that the stack pointer is always decremented before
calling into any C code.
Reviewed-by: Mark Rutland <mark.rutland@arm.com >
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org >
Signed-off-by: Will Deacon <will.deacon@arm.com >
2016-09-02 11:47:51 +01:00
..
2016-08-25 18:00:29 +01:00
2016-07-12 16:06:32 +01:00
2012-09-17 13:42:21 +01:00
2016-05-30 14:27:09 +02:00
2016-02-26 15:39:52 +00:00
2016-04-26 14:37:41 +01:00
2016-08-25 18:00:29 +01:00
2016-07-21 18:20:41 +01:00
2016-07-29 13:55:30 -07:00
2016-07-27 11:16:05 -07:00
2015-01-15 11:55:07 +00:00
2016-07-27 11:16:05 -07:00
2016-08-22 12:32:29 +01:00
2016-06-27 16:31:25 +01:00
2016-06-27 16:31:25 +01:00
2016-08-31 13:48:15 +01:00
2016-07-21 23:29:38 +02:00
2016-07-12 16:09:37 +01:00
2016-09-01 13:45:58 +01:00
2016-04-14 18:11:30 +01:00
2016-07-01 11:56:26 +01:00
2015-07-10 16:47:13 +01:00
2014-07-31 11:42:42 +01:00
2015-10-02 11:12:56 +01:00
2016-09-01 20:22:47 +01:00
2016-03-04 18:19:17 +00:00
2015-12-21 17:26:01 +00:00
2016-09-02 11:47:51 +01:00
2016-08-22 10:00:48 +01:00
2016-08-26 11:21:25 +01:00
2016-09-01 13:45:51 +01:00
2016-06-27 16:31:25 +01:00
2016-05-16 17:17:24 -07:00
2016-08-26 10:13:41 +01:00
2014-11-06 17:25:27 +00:00
2015-12-21 17:26:01 +00:00
2015-08-03 11:34:12 +02:00
2016-08-22 12:32:29 +01:00
2016-07-19 15:03:20 +01:00
2014-07-10 11:02:40 +01:00
2016-06-27 16:31:26 +01:00
2016-08-31 12:31:38 +01:00
2016-02-24 14:57:24 +00:00
2016-02-24 14:57:27 +00:00
2016-02-24 14:57:24 +00:00
2015-12-21 14:40:54 +00:00
2016-08-01 12:23:44 -05:00
2016-05-16 23:11:51 -03:00
2016-08-22 10:00:48 +01:00
2015-01-09 11:12:28 +01:00
2016-05-20 17:58:30 -07:00
2016-02-11 15:33:38 +00:00
2016-07-29 17:38:46 -07:00
2016-06-27 16:31:25 +01:00
2015-12-21 17:26:02 +00:00
2016-08-31 12:31:38 +01:00
2016-03-04 18:19:17 +00:00
2016-08-22 10:00:48 +01:00
2016-09-02 11:47:51 +01:00
2016-01-04 16:24:45 +00:00
2016-08-25 18:00:30 +01:00
2016-08-09 11:00:44 +01:00
2016-02-12 15:53:51 +00:00
2016-09-01 13:45:51 +01:00
2015-03-19 10:43:51 +00:00
2014-12-01 13:31:12 +00:00
2016-04-20 12:22:42 +01:00
2015-12-21 17:26:02 +00:00
2015-07-27 11:08:41 +01:00
2014-11-20 16:35:02 +00:00
2016-07-01 11:46:00 +01:00
2016-08-22 12:32:29 +01:00
2016-08-25 18:00:30 +01:00