Subversion Repositories HelenOS

Rev

Rev 2787 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2787 Rev 3536
Line 245... Line 245...
245
        : "=r" (v)
245
        : "=r" (v)
246
    );
246
    );
247
    return v;
247
    return v;
248
}
248
}
249
 
249
 
-
 
250
/** Write to MSR */
-
 
251
static inline void write_msr(uint32_t msr, uint64_t value)
-
 
252
{
-
 
253
    asm volatile ("wrmsr" : : "c" (msr), "a" ((uint32_t)(value)),
-
 
254
        "d" ((uint32_t)(value >> 32)));
-
 
255
}
-
 
256
 
-
 
257
static inline uint64_t read_msr(uint32_t msr)
-
 
258
{
-
 
259
    uint32_t ax, dx;
-
 
260
 
-
 
261
    asm volatile ("rdmsr" : "=a"(ax), "=d"(dx) : "c" (msr));
-
 
262
    return ((uint64_t)dx << 32) | ax;
-
 
263
}
-
 
264
 
-
 
265
 
250
/** Return base address of current stack
266
/** Return base address of current stack
251
 *
267
 *
252
 * Return the base address of the current stack.
268
 * Return the base address of the current stack.
253
 * The stack is assumed to be STACK_SIZE bytes long.
269
 * The stack is assumed to be STACK_SIZE bytes long.
254
 * The stack must start on page boundary.
270
 * The stack must start on page boundary.