kernel: Move per-cpu _kernel_t fields into separate struct
When in SMP mode, the nested/irq_stack/current fields are specific to the current CPU and not to the kernel as a whole, so we need an array of these. Place them in a _cpu_t struct and implement a _arch_curr_cpu() function to retrieve the pointer. When not in SMP mode, the first CPU's fields are defined as a unioned with the first _cpu_t record. This permits compatibility with legacy assembly on other platforms. Long term, all users, including uniprocessor architectures, should be updated to use the new scheme. Fundamentally this is just renaming: the structure layout and runtime code do not change on any existing platforms and won't until someone defines a second CPU. Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
This commit is contained in:
parent
9c62cc677d
commit
e694656345
7 changed files with 70 additions and 18 deletions
|
@ -232,7 +232,7 @@ _switch_restore_pc:
|
|||
*/
|
||||
.align 4
|
||||
_handle_excint:
|
||||
EXCINT_HANDLER MISC0, ___kernel_t_nested_OFFSET, ___kernel_t_irq_stack_OFFSET
|
||||
EXCINT_HANDLER MISC0, ___cpu_t_nested_OFFSET, ___cpu_t_irq_stack_OFFSET
|
||||
|
||||
/* Define the actual vectors for the hardware-defined levels with
|
||||
* DEF_EXCINT. These load a C handler address and jump to our handler
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue