Changeset c16479e in mainline
- Timestamp:
- 2017-08-21T18:42:28Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ccc362a1
- Parents:
- 5f2926a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/riscv64/include/arch/asm.h
r5f2926a rc16479e 41 41 #include <trace.h> 42 42 43 #define SSTATUS_SIE_MASK 0x00000002 44 43 45 NO_TRACE static inline ipl_t interrupts_enable(void) 44 46 { 45 // FIXME 46 return 0; 47 ipl_t ipl; 48 49 asm volatile ( 50 "csrrsi %[ipl], sstatus, " STRING(SSTATUS_SIE_MASK) "\n" 51 : [ipl] "=r" (ipl) 52 ); 53 54 return ipl; 47 55 } 48 56 49 57 NO_TRACE static inline ipl_t interrupts_disable(void) 50 58 { 51 // FIXME 52 return 0; 59 ipl_t ipl; 60 61 asm volatile ( 62 "csrrci %[ipl], sstatus, " STRING(SSTATUS_SIE_MASK) "\n" 63 : [ipl] "=r" (ipl) 64 ); 65 66 return ipl; 53 67 } 54 68 55 69 NO_TRACE static inline void interrupts_restore(ipl_t ipl) 56 70 { 57 // FIXME 71 if ((ipl & SSTATUS_SIE_MASK) == SSTATUS_SIE_MASK) 72 interrupts_enable(); 73 else 74 interrupts_disable(); 58 75 } 59 76 60 77 NO_TRACE static inline ipl_t interrupts_read(void) 61 78 { 62 // FIXME 63 return 0; 79 ipl_t ipl; 80 81 asm volatile ( 82 "csrr %[ipl], sstatus\n" 83 : [ipl] "=r" (ipl) 84 ); 85 86 return ipl; 64 87 } 65 88 66 89 NO_TRACE static inline bool interrupts_disabled(void) 67 90 { 68 // FIXME 69 return 0; 91 return ((interrupts_read() & SSTATUS_SIE_MASK) == 0); 70 92 } 71 93 72 94 NO_TRACE static inline uintptr_t get_stack_base(void) 73 95 { 74 // FIXME 75 return 0; 96 uintptr_t base; 97 98 asm volatile ( 99 "and %[base], sp, %[mask]\n" 100 : [base] "=r" (base) 101 : [mask] "r" (~(STACK_SIZE - 1)) 102 ); 103 104 return base; 76 105 } 77 106
Note:
See TracChangeset
for help on using the changeset viewer.