diff options
author | Hyungwoo Yang <hyungwoo.yang@intel.com> | 2019-01-30 12:30:47 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-02-26 05:09:12 -0800 |
commit | decc9452e981a7c8ce5c6b8983061a054057c615 (patch) | |
tree | eaea7bba6491f96bc06a77e2af2fd43d4b210894 /board | |
parent | 0a3f44e4f508d0c6a96519e6db97b2f2fd4bfb23 (diff) | |
download | chrome-ec-decc9452e981a7c8ce5c6b8983061a054057c615.tar.gz |
ish: save/restore FPU context only for the task uses FPU
Currently we save/retore FPU H/W context for every task on
every contxt switch. This hurts overall performance of ISH.
This patch allows save and restore FPU H/W context only for
a task that declares it uses FPU.
BRANCH=none
BUG=none
TEST=verified in Atlas platform
Change-Id: Ic2f0bbf59f655661e2dd788c688edc4e83068c1c
Signed-off-by: Hyungwoo Yang <hyungwoo.yang@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/1448818
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Hyungwoo Yang <hyungwoo.yang@intel.corp-partner.google.com>
Reviewed-by: Jett Rink <jettrink@chromium.org>
Diffstat (limited to 'board')
-rw-r--r-- | board/arcada_ish/ec.tasklist | 10 | ||||
-rw-r--r-- | board/atlas_ish/ec.tasklist | 14 |
2 files changed, 14 insertions, 10 deletions
diff --git a/board/arcada_ish/ec.tasklist b/board/arcada_ish/ec.tasklist index f384af4d8b..b6e2cf28d5 100644 --- a/board/arcada_ish/ec.tasklist +++ b/board/arcada_ish/ec.tasklist @@ -8,15 +8,17 @@ * * The first one has the lowest priority. * - * For each task, use the macro TASK_ALWAYS(n, r, d, s) for base tasks and - * TASK_NOTEST(n, r, d, s) for tasks that can be excluded in test binaries, + * For each task, use the macro TASK_ALWAYS(n, r, d, s, f) for base tasks and + * TASK_NOTEST(n, r, d, s, f) for tasks that can be excluded in test binaries, * where : * 'n' in the name of the task * 'r' in the main routine of the task * 'd' in an opaque parameter passed to the routine at startup * 's' is the stack size in bytes; must be a multiple of 8 + * 'f' is the bit flags for the platform specific information + * - MIA_TASK_FLAG_USE_FPU : bit 0, task uses FPU H/W */ #define CONFIG_TASK_LIST \ - TASK_ALWAYS(HOOKS, hook_task, NULL, HUGE_TASK_STACK_SIZE) \ - TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE) + TASK_ALWAYS(HOOKS, hook_task, NULL, HUGE_TASK_STACK_SIZE, 0) \ + TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE, 0) diff --git a/board/atlas_ish/ec.tasklist b/board/atlas_ish/ec.tasklist index 4fa8b59582..4486b508e6 100644 --- a/board/atlas_ish/ec.tasklist +++ b/board/atlas_ish/ec.tasklist @@ -8,17 +8,19 @@ * * The first one has the lowest priority. * - * For each task, use the macro TASK_ALWAYS(n, r, d, s) for base tasks and - * TASK_NOTEST(n, r, d, s) for tasks that can be excluded in test binaries, + * For each task, use the macro TASK_ALWAYS(n, r, d, s, f) for base tasks and + * TASK_NOTEST(n, r, d, s, f) for tasks that can be excluded in test binaries, * where : * 'n' in the name of the task * 'r' in the main routine of the task * 'd' in an opaque parameter passed to the routine at startup * 's' is the stack size in bytes; must be a multiple of 8 + * 'f' is the bit flags for the platform specific information + * - MIA_TASK_FLAG_USE_FPU : bit 0, task uses FPU H/W */ #define CONFIG_TASK_LIST \ - TASK_ALWAYS(HOOKS, hook_task, NULL, HUGE_TASK_STACK_SIZE) \ - TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE) \ - TASK_ALWAYS(HECI_RX, heci_rx_task, NULL, HUGE_TASK_STACK_SIZE) \ - TASK_ALWAYS(IPC_MNG, ipc_mng_task, NULL, LARGER_TASK_STACK_SIZE) + TASK_ALWAYS(HOOKS, hook_task, NULL, HUGE_TASK_STACK_SIZE, 0) \ + TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE, 0) \ + TASK_ALWAYS(HECI_RX, heci_rx_task, NULL, HUGE_TASK_STACK_SIZE, 0) \ + TASK_ALWAYS(IPC_MNG, ipc_mng_task, NULL, LARGER_TASK_STACK_SIZE, 0) |