Changeset 379d73f3 in mainline for arch/amd64/include/asm.h
- Timestamp:
- 2005-08-30T22:11:45Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c5ae095
- Parents:
- b524f816
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/amd64/include/asm.h
rb524f816 r379d73f3 33 33 #include <config.h> 34 34 35 35 36 void asm_delay_loop(__u32 t); 36 37 … … 43 44 static inline void cpu_sleep(void) { __asm__("hlt"); }; 44 45 46 47 static inline __u8 inb(__u16 port) 48 { 49 __u8 out; 50 51 asm ( 52 "mov %0, %%dx;" 53 "inb %%dx,%%al;" 54 "mov %%al, %1;" 55 :"=m"(out) 56 :"m"(port) 57 :"dx","al" 58 ); 59 return out; 60 } 61 62 static inline __u8 outb(__u16 port,__u8 b) 63 { 64 asm ( 65 "mov %0,%%dx;" 66 "mov %1,%%al;" 67 "outb %%al,%%dx;" 68 : 69 :"m"( port), "m" (b) 70 :"dx","al" 71 ); 72 } 73 74 /** Set priority level low 75 * 76 * Enable interrupts and return previous 77 * value of EFLAGS. 78 */ 79 static inline pri_t cpu_priority_low(void) { 80 pri_t v; 81 __asm__ volatile ( 82 "pushfq\n" 83 "popq %0\n" 84 "sti\n" 85 : "=r" (v) 86 ); 87 return v; 88 } 89 90 /** Set priority level high 91 * 92 * Disable interrupts and return previous 93 * value of EFLAGS. 94 */ 95 static inline pri_t cpu_priority_high(void) { 96 pri_t v; 97 __asm__ volatile ( 98 "pushfq\n" 99 "popq %0\n" 100 "cli\n" 101 : "=r" (v) 102 ); 103 return v; 104 } 105 106 /** Restore priority level 107 * 108 * Restore EFLAGS. 109 */ 110 static inline void cpu_priority_restore(pri_t pri) { 111 __asm__ volatile ( 112 "pushq %0\n" 113 "popfq\n" 114 : : "r" (pri) 115 ); 116 } 117 118 45 119 #endif
Note:
See TracChangeset
for help on using the changeset viewer.