Ignore:
Timestamp:
2009-03-03T22:56:33Z (16 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9cd98796
Parents:
06f96234
Message:

PIO functions for uspace.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/libc/arch/ia64/include/ddi.h

    r06f96234 r1ae8f2b  
    11/*
    2  * Copyright (c) 2005 Jakub Jermar, Jakub Vana
     2 * Copyright (c) 2005 Jakub Vana
    33 * All rights reserved.
    44 *
     
    2727 */
    2828
    29 /** @addtogroup ia64   
     29/** @addtogroup libcia64       
    3030 * @{
    3131 */
     
    3636#define LIBC_ia64_DDI_H_
    3737
     38#include <sys/types.h>
    3839#include <libarch/types.h>
    3940
    40 typedef uint64_t ioport_t;
     41#define IO_SPACE_BOUNDARY       (64 * 1024)
    4142
    4243uint64_t get_ia64_iospace_address(void);
     
    4445extern uint64_t ia64_iospace_address;
    4546
    46 #define IA64_IOSPACE_ADDRESS (ia64_iospace_address?ia64_iospace_address:(ia64_iospace_address=get_ia64_iospace_address()))
     47#define IA64_IOSPACE_ADDRESS \
     48        (ia64_iospace_address ? \
     49            ia64_iospace_address : \
     50            (ia64_iospace_address = get_ia64_iospace_address()))
    4751
    48 static inline void  outb(ioport_t port,uint8_t v)
     52static inline void pio_write_8(ioport8_t *port, uint8_t v)
    4953{
    50         *((uint8_t *)(IA64_IOSPACE_ADDRESS + ( (port & 0xfff) | ( (port >> 2) << 12 )))) = v;
     54        uintptr_t prt = (uintptr_t) port;
     55
     56        *((uint8_t *)(IA64_IOSPACE_ADDRESS +
     57            ((prt & 0xfff) | ((prt >> 2) << 12)))) = v;
    5158
    5259        asm volatile ("mf\n" ::: "memory");
    5360}
    5461
    55 static inline void  outw(ioport_t port,uint16_t v)
     62static inline void pio_write_16(ioport16_t *port, uint16_t v)
    5663{
    57         *((uint16_t *)(IA64_IOSPACE_ADDRESS + ( (port & 0xfff) | ( (port >> 2) << 12 )))) = v;
     64        uintptr_t prt = (uintptr_t) port;
     65
     66        *((uint16_t *)(IA64_IOSPACE_ADDRESS +
     67            ((prt & 0xfff) | ((prt >> 2) << 12)))) = v;
    5868
    5969        asm volatile ("mf\n" ::: "memory");
    6070}
    6171
    62 static inline void  outl(ioport_t port,uint32_t v)
     72static inline void pio_write_32(ioport32_t *port, uint32_t v)
    6373{
    64         *((uint32_t *)(IA64_IOSPACE_ADDRESS + ( (port & 0xfff) | ( (port >> 2) << 12 )))) = v;
     74        uintptr_t prt = (uintptr_t) port;
     75
     76        *((uint32_t *)(IA64_IOSPACE_ADDRESS +
     77            ((prt & 0xfff) | ((prt >> 2) << 12)))) = v;
    6578
    6679        asm volatile ("mf\n" ::: "memory");
    6780}
    6881
     82static inline uint8_t pio_read_8(ioport8_t *port)
     83{
     84        uintptr_t prt = (uintptr_t) port;
    6985
    70 
    71 static inline uint8_t inb(ioport_t port)
    72 {
    7386        asm volatile ("mf\n" ::: "memory");
    7487
    75         return *((uint8_t *)(IA64_IOSPACE_ADDRESS + ( (port & 0xfff) | ( (port >> 2) << 12 ))));
     88        return *((uint8_t *)(IA64_IOSPACE_ADDRESS +
     89            ((prt & 0xfff) | ((prt >> 2) << 12))));
    7690}
    7791
    78 static inline uint16_t inw(ioport_t port)
     92static inline uint16_t pio_read_16(ioport16_t *port)
    7993{
     94        uintptr_t prt = (uintptr_t) port;
     95
    8096        asm volatile ("mf\n" ::: "memory");
    8197
    82         return *((uint16_t *)(IA64_IOSPACE_ADDRESS + ( (port & 0xffE) | ( (port >> 2) << 12 ))));
     98        return *((uint16_t *)(IA64_IOSPACE_ADDRESS +
     99            ((prt & 0xffE) | ((prt >> 2) << 12))));
    83100}
    84101
    85 static inline uint32_t inl(ioport_t port)
     102static inline uint32_t pio_read_32(ioport32_t *port)
    86103{
     104        uintptr_t prt = (uintptr_t) port;
     105
    87106        asm volatile ("mf\n" ::: "memory");
    88107
    89         return *((uint32_t *)(IA64_IOSPACE_ADDRESS + ( (port & 0xfff) | ( (port >> 2) << 12 ))));
     108        return *((uint32_t *)(IA64_IOSPACE_ADDRESS +
     109            ((prt & 0xfff) | ((prt >> 2) << 12))));
    90110}
    91 
    92 
    93 
    94111
    95112#endif
Note: See TracChangeset for help on using the changeset viewer.