Changeset a2a5529 in mainline for kernel/arch/ia64/include/asm.h


Ignore:
Timestamp:
2008-11-11T07:50:04Z (16 years ago)
Author:
Jakub Vana <jakub.vana@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
59e4864
Parents:
b24786a
Message:

Support for serial port console on IA64 as a compensation for keyboard - based on SPARC ns16550 driver

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia64/include/asm.h

    rb24786a ra2a5529  
    4040#include <arch/register.h>
    4141
     42typedef uint64_t ioport_t;
    4243
    4344#define IA64_IOSPACE_ADDRESS 0xE001000000000000ULL
    4445
    45 static inline void  outb(uint64_t port,uint8_t v)
     46static inline void  outb(ioport_t port,uint8_t v)
    4647{
    4748        *((uint8_t *)(IA64_IOSPACE_ADDRESS + ( (port & 0xfff) | ( (port >> 2) << 12 )))) = v;
     
    5051}
    5152
    52 static inline void  outw(uint64_t port,uint16_t v)
     53static inline void  outw(ioport_t port,uint16_t v)
    5354{
    5455        *((uint16_t *)(IA64_IOSPACE_ADDRESS + ( (port & 0xfff) | ( (port >> 2) << 12 )))) = v;
     
    5758}
    5859
    59 static inline void  outl(uint64_t port,uint32_t v)
     60static inline void  outl(ioport_t port,uint32_t v)
    6061{
    6162        *((uint32_t *)(IA64_IOSPACE_ADDRESS + ( (port & 0xfff) | ( (port >> 2) << 12 )))) = v;
     
    6667
    6768
    68 static inline uint8_t inb(uint64_t port)
     69static inline uint8_t inb(ioport_t port)
    6970{
    7071        asm volatile ("mf\n" ::: "memory");
     
    7374}
    7475
    75 static inline uint16_t inw(uint64_t port)
     76static inline uint16_t inw(ioport_t port)
    7677{
    7778        asm volatile ("mf\n" ::: "memory");
     
    8081}
    8182
    82 static inline uint32_t inl(uint64_t port)
     83static inline uint32_t inl(ioport_t port)
    8384{
    8485        asm volatile ("mf\n" ::: "memory");
     
    99100        uint64_t v;
    100101
    101         asm volatile ("and %0 = %1, r12" : "=r" (v) : "r" (~(STACK_SIZE-1)));
    102        
    103         return v;
     102        //I'm not sure why but this code bad inlines in scheduler,
     103        //so THE shifts about 16B and causes kernel panic
     104        //asm volatile ("and %0 = %1, r12" : "=r" (v) : "r" (~(STACK_SIZE-1)));
     105        //return v;
     106       
     107        //this code have the same meaning but inlines well
     108        asm volatile ("mov %0 = r12" : "=r" (v)  );
     109        return v & (~(STACK_SIZE-1));
    104110}
    105111
     
    152158        return v;
    153159}
     160
     161static inline uint64_t cr64_read(void)
     162{
     163        uint64_t v;
     164       
     165        asm volatile ("mov %0 = cr64\n" : "=r" (v));
     166       
     167        return v;
     168}
     169
    154170
    155171/** Write ITC (Interval Timer Counter) register.
Note: See TracChangeset for help on using the changeset viewer.