Changeset a218709 in mainline for kernel/arch/sparc32/include


Ignore:
Timestamp:
2013-12-02T23:45:45Z (12 years ago)
Author:
Jakub Klama <jakub.klama@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
2955bb9
Parents:
3bc42bd
Message:

Implement new userspace window trap mechanism, which utilizes MMU probe
to choose between slow (preemptive, involving inserting stack page mapping)
and fast (direct) handlers.

Location:
kernel/arch/sparc32/include/arch
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/sparc32/include/arch/arch.h

    r3bc42bd ra218709  
    4040
    4141#include <typedefs.h>
     42#include <arch/istate.h>
    4243
    4344#define NWINDOWS        8
     
    7677extern void arch_pre_main(void *unused, bootinfo_t *bootinfo);
    7778extern void write_to_invalid(uint32_t l0, uint32_t l1, uint32_t l2);
     79extern void read_from_invalid(uint32_t *l0, uint32_t *l1, uint32_t *l2);
     80extern void preemptible_save_uspace(uintptr_t sp, istate_t *istate);
     81extern void preemptible_restore_uspace(uintptr_t sp, istate_t *istate);
     82extern void flush_windows(void);
    7883
    7984#endif
  • kernel/arch/sparc32/include/arch/asm.h

    r3bc42bd ra218709  
    145145}
    146146
     147NO_TRACE static inline uint32_t wim_read()
     148{
     149        uint32_t v;
     150
     151        asm volatile (
     152                "mov %%wim, %[v]\n"
     153                : [v] "=r" (v)
     154        );
     155
     156        return v;
     157}
     158
    147159NO_TRACE static inline uint32_t asi_u32_read(int asi, uintptr_t va)
    148160{
     
    178190}
    179191
     192NO_TRACE static inline void wim_write(uint32_t wim)
     193{
     194        asm volatile (
     195                "mov %[v], %%wim\n"
     196                :: [v] "r" (wim)
     197        );
     198}
     199
    180200NO_TRACE static inline ipl_t interrupts_enable(void)
    181201{
  • kernel/arch/sparc32/include/arch/context.h

    r3bc42bd ra218709  
    4545#define context_set(c, _pc, stack, size) \
    4646        do { \
    47                 (c)->pc = ((uintptr_t) _pc) - 4; \
     47                (c)->pc = ((uintptr_t) _pc) - 8; \
    4848                (c)->sp = ((uintptr_t) stack) + ALIGN_UP((size), \
    4949                    STACK_ALIGNMENT) - (SP_DELTA); \
  • kernel/arch/sparc32/include/arch/faddr.h

    r3bc42bd ra218709  
    3333 */
    3434
    35 #ifndef KERN_abs32le_FADDR_H_
    36 #define KERN_abs32le_FADDR_H_
     35#ifndef KERN_sparc32_FADDR_H_
     36#define KERN_sparc32_FADDR_H_
    3737
    3838#include <typedefs.h>
  • kernel/arch/sparc32/include/arch/regwin.h

    r3bc42bd ra218709  
    4242#include <align.h>
    4343
    44 #define CLEAN_WINDOW_HANDLER_SIZE       REGWIN_HANDLER_SIZE
    45 #define SPILL_HANDLER_SIZE              REGWIN_HANDLER_SIZE
    46 #define FILL_HANDLER_SIZE               REGWIN_HANDLER_SIZE
     44#define UWB_ALIGNMENT   1024
    4745
    4846/* Window Save Area offsets. */
Note: See TracChangeset for help on using the changeset viewer.