Author: stepan Date: 2008-08-16 17:17:36 +0200 (Sat, 16 Aug 2008) New Revision: 3513
Modified: trunk/payloads/libpayload/include/arch/io.h Log: add block io functions
Signed-off-by: Stefan Reinauer stepan@coresystems.de Acked-by: Stefan Reinauer stepan@coresystems.de
Modified: trunk/payloads/libpayload/include/arch/io.h =================================================================== --- trunk/payloads/libpayload/include/arch/io.h 2008-08-16 15:16:36 UTC (rev 3512) +++ trunk/payloads/libpayload/include/arch/io.h 2008-08-16 15:17:36 UTC (rev 3513) @@ -2,6 +2,7 @@ * This file is part of the libpayload project. * * Copyright (C) 2008 Advanced Micro Devices, Inc. + * Copyright (C) 2008 coresystems GmbH * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -74,4 +75,34 @@ __asm__ __volatile__("outb %b0, %w1" : : "a"(val), "Nd"(port)); }
+static inline void outsl(int port, const void *addr, unsigned long count) +{ + __asm__ __volatile__("rep; outsl" : "+S"(addr), "+c"(count) : "d"(port)); +} + +static inline void outsw(int port, const void *addr, unsigned long count) +{ + __asm__ __volatile__("rep; outsw" : "+S"(addr), "+c"(count) : "d"(port)); +} + +static inline void outsb(int port, const void *addr, unsigned long count) +{ + __asm__ __volatile__("rep; outsb" : "+S"(addr), "+c"(count) : "d"(port)); +} + +static inline void insl(int port, void *addr, unsigned long count) +{ + __asm__ __volatile__("rep; insl" : "+D"(addr), "+c"(count) : "d"(port)); +} + +static inline void insw(int port, void *addr, unsigned long count) +{ + __asm__ __volatile__("rep; insw" : "+D"(addr), "+c"(count) : "d"(port)); +} + +static inline void insb(int port, void *addr, unsigned long count) +{ + __asm__ __volatile__("rep; insb" : "+D"(addr), "+c"(count) : "d"(port)); +} + #endif