mirror of
https://gitlab.com/sortix/sortix.git
synced 2023-02-13 20:55:38 -05:00
Port sortix/pci.h from <sortix/kernel/endian.h> to <endian.h>.
This commit is contained in:
parent
984397565f
commit
d0c7ca3c02
1 changed files with 8 additions and 10 deletions
|
@ -1,6 +1,6 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
|
|
||||||
Copyright(C) Jonas 'Sortie' Termansen 2011, 2012.
|
Copyright(C) Jonas 'Sortie' Termansen 2011, 2012, 2013.
|
||||||
|
|
||||||
This file is part of Sortix.
|
This file is part of Sortix.
|
||||||
|
|
||||||
|
@ -22,14 +22,12 @@
|
||||||
|
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
#include <endian.h>
|
||||||
|
|
||||||
#include <sortix/kernel/platform.h>
|
#include <sortix/kernel/platform.h>
|
||||||
#include <sortix/kernel/endian.h>
|
|
||||||
#include <sortix/kernel/pci.h>
|
#include <sortix/kernel/pci.h>
|
||||||
#include <sortix/kernel/cpu.h>
|
#include <sortix/kernel/cpu.h>
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
// TODO: Verify that the endian conversions in this file actually works. I have
|
|
||||||
// a sneaking suspicion that they won't work on non-little endian platforms.
|
|
||||||
|
|
||||||
namespace Sortix {
|
namespace Sortix {
|
||||||
namespace PCI {
|
namespace PCI {
|
||||||
|
@ -66,12 +64,12 @@ void WriteRaw32(uint32_t devaddr, uint8_t off, uint32_t val)
|
||||||
|
|
||||||
uint32_t Read32(uint32_t devaddr, uint8_t off)
|
uint32_t Read32(uint32_t devaddr, uint8_t off)
|
||||||
{
|
{
|
||||||
return LittleToHost(ReadRaw32(devaddr, off));
|
return le32toh(ReadRaw32(devaddr, off));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Write32(uint32_t devaddr, uint8_t off, uint32_t val)
|
void Write32(uint32_t devaddr, uint8_t off, uint32_t val)
|
||||||
{
|
{
|
||||||
WriteRaw32(devaddr, off, HostToLittle(val));
|
WriteRaw32(devaddr, off, htole32(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t Read16(uint32_t devaddr, uint8_t off)
|
uint16_t Read16(uint32_t devaddr, uint8_t off)
|
||||||
|
@ -81,14 +79,14 @@ uint16_t Read16(uint32_t devaddr, uint8_t off)
|
||||||
union { uint16_t val16[2]; uint32_t val32; };
|
union { uint16_t val16[2]; uint32_t val32; };
|
||||||
val32 = ReadRaw32(devaddr, alignedoff);
|
val32 = ReadRaw32(devaddr, alignedoff);
|
||||||
uint16_t ret = off & 0x2 ? val16[0] : val16[1];
|
uint16_t ret = off & 0x2 ? val16[0] : val16[1];
|
||||||
return LittleToHost(ret);
|
return le16toh(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t Read8(uint32_t devaddr, uint8_t off)
|
uint8_t Read8(uint32_t devaddr, uint8_t off)
|
||||||
{
|
{
|
||||||
uint8_t alignedoff = off & ~0x1;
|
uint8_t alignedoff = off & ~0x1;
|
||||||
union { uint8_t val8[2]; uint32_t val16; };
|
union { uint8_t val8[2]; uint32_t val16; };
|
||||||
val16 = HostToLittle(Read16(devaddr, alignedoff));
|
val16 = htole16(Read16(devaddr, alignedoff));
|
||||||
uint8_t ret = off & 0x1 ? val8[0] : val8[1];
|
uint8_t ret = off & 0x1 ? val8[0] : val8[1];
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue