Changeset e11ae91 in mainline for kernel/arch/sparc64/src/trap


Ignore:
Timestamp:
2006-08-30T11:31:25Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ee454eb
Parents:
0fa6044
Message:

sparc64 work.

  • Modify before_thread_runs_arch() to store addresses of the kernel stack and

userspace window buffer, resp., to registers %g6 and %g7, resp, in the
alternate and interrupt global sets.

  • Modify after_thread_ran_arch() to sample %g7 from the alternate globals.
  • Implement trap handler for spilling register windows into userspace window buffer.
  • Implement assembly language functions to access %g6 and %g7 registers in the alternate sets.
  • Initialize the trap table so that there are now also spill_1_normal, spill_2_normal,

spill_0_other and fill_1_normal handlers. These handlers are used in different situations
and for different purposes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/sparc64/src/trap/trap_table.S

    r0fa6044 re11ae91  
    204204        SPILL_NORMAL_HANDLER_KERNEL
    205205
     206/* TT = 0x84, TL = 0, spill_1_normal handler */
     207.org trap_table + TT_SPILL_1_NORMAL*ENTRY_SIZE
     208.global spill_1_normal
     209spill_1_normal:
     210        SPILL_NORMAL_HANDLER_USERSPACE
     211
     212/* TT = 0x88, TL = 0, spill_2_normal handler */
     213.org trap_table + TT_SPILL_2_NORMAL*ENTRY_SIZE
     214.global spill_2_normal
     215spill_2_normal:
     216        SPILL_TO_USPACE_WINDOW_BUFFER
     217
    206218/* TT = 0xc0, TL = 0, fill_0_normal handler */
    207219.org trap_table + TT_FILL_0_NORMAL*ENTRY_SIZE
     
    210222        FILL_NORMAL_HANDLER_KERNEL
    211223
     224/* TT = 0xc4, TL = 0, fill_1_normal handler */
     225.org trap_table + TT_FILL_1_NORMAL*ENTRY_SIZE
     226.global fill_1_normal
     227fill_1_normal:
     228        FILL_NORMAL_HANDLER_USERSPACE
     229
    212230/*
    213231 * Handlers for TL>0.
     
    267285spill_0_normal_high:
    268286        SPILL_NORMAL_HANDLER_KERNEL
     287
     288/* TT = 0x88, TL > 0, spill_2_normal handler */
     289.org trap_table + (TT_SPILL_2_NORMAL+512)*ENTRY_SIZE
     290.global spill_2_normal_high
     291spill_2_normal_high:
     292        SPILL_TO_USPACE_WINDOW_BUFFER
     293
     294/* TT = 0xa0, TL > 0, spill_0_other handler */
     295.org trap_table + (TT_SPILL_0_OTHER+512)*ENTRY_SIZE
     296.global spill_0_other_high
     297spill_0_other_high:
     298        SPILL_TO_USPACE_WINDOW_BUFFER
    269299
    270300/* TT = 0xc0, TL > 0, fill_0_normal handler */
     
    290320 *      %g2             Argument for the function.
    291321 *      %g6             Pre-set as kernel stack base if trap from userspace.
    292  *      %g7             Reserved.
     322 *      %g7             Pre-set as address of the userspace window buffer.
    293323 */
    294324.global preemptible_handler
Note: See TracChangeset for help on using the changeset viewer.