Changeset 379d73f3 in mainline for arch/amd64/include/asm.h


Ignore:
Timestamp:
2005-08-30T22:11:45Z (20 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c5ae095
Parents:
b524f816
Message:

Added putchar to AMD

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/amd64/include/asm.h

    rb524f816 r379d73f3  
    3333#include <config.h>
    3434
     35
    3536void asm_delay_loop(__u32 t);
    3637
     
    4344static inline void cpu_sleep(void) { __asm__("hlt"); };
    4445
     46
     47static 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
     62static 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 */
     79static 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 */
     95static 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 */
     110static 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
    45119#endif
Note: See TracChangeset for help on using the changeset viewer.