summaryrefslogtreecommitdiff
path: root/src/dev
diff options
context:
space:
mode:
Diffstat (limited to 'src/dev')
-rw-r--r--src/dev/disk_image.cc20
-rw-r--r--src/dev/disk_image.hh22
-rw-r--r--src/dev/ide_disk.cc2
3 files changed, 23 insertions, 21 deletions
diff --git a/src/dev/disk_image.cc b/src/dev/disk_image.cc
index c9defb605..84027d9b4 100644
--- a/src/dev/disk_image.cc
+++ b/src/dev/disk_image.cc
@@ -86,7 +86,7 @@ RawDiskImage::close()
stream.close();
}
-off_t
+std::streampos
RawDiskImage::size() const
{
if (disk_size == 0) {
@@ -99,8 +99,8 @@ RawDiskImage::size() const
return disk_size / SectorSize;
}
-off_t
-RawDiskImage::read(uint8_t *data, off_t offset) const
+std::streampos
+RawDiskImage::read(uint8_t *data, std::streampos offset) const
{
if (!initialized)
panic("RawDiskImage not initialized");
@@ -120,8 +120,8 @@ RawDiskImage::read(uint8_t *data, off_t offset) const
return stream.tellg() - pos;
}
-off_t
-RawDiskImage::write(const uint8_t *data, off_t offset)
+std::streampos
+RawDiskImage::write(const uint8_t *data, std::streampos offset)
{
if (!initialized)
panic("RawDiskImage not initialized");
@@ -357,12 +357,12 @@ CowDiskImage::writeback()
}
}
-off_t
+std::streampos
CowDiskImage::size() const
{ return child->size(); }
-off_t
-CowDiskImage::read(uint8_t *data, off_t offset) const
+std::streampos
+CowDiskImage::read(uint8_t *data, std::streampos offset) const
{
if (!initialized)
panic("CowDiskImage not initialized");
@@ -381,8 +381,8 @@ CowDiskImage::read(uint8_t *data, off_t offset) const
}
}
-off_t
-CowDiskImage::write(const uint8_t *data, off_t offset)
+std::streampos
+CowDiskImage::write(const uint8_t *data, std::streampos offset)
{
if (!initialized)
panic("RawDiskImage not initialized");
diff --git a/src/dev/disk_image.hh b/src/dev/disk_image.hh
index 1b846522f..905879248 100644
--- a/src/dev/disk_image.hh
+++ b/src/dev/disk_image.hh
@@ -58,10 +58,12 @@ class DiskImage : public SimObject
DiskImage(const Params *p) : SimObject(p), initialized(false) {}
virtual ~DiskImage() {}
- virtual off_t size() const = 0;
+ virtual std::streampos size() const = 0;
- virtual off_t read(uint8_t *data, off_t offset) const = 0;
- virtual off_t write(const uint8_t *data, off_t offset) = 0;
+ virtual std::streampos read(uint8_t *data,
+ std::streampos offset) const = 0;
+ virtual std::streampos write(const uint8_t *data,
+ std::streampos offset) = 0;
};
/**
@@ -73,7 +75,7 @@ class RawDiskImage : public DiskImage
mutable std::fstream stream;
std::string file;
bool readonly;
- mutable off_t disk_size;
+ mutable std::streampos disk_size;
public:
typedef RawDiskImageParams Params;
@@ -83,10 +85,10 @@ class RawDiskImage : public DiskImage
void close();
void open(const std::string &filename, bool rd_only = false);
- virtual off_t size() const;
+ virtual std::streampos size() const;
- virtual off_t read(uint8_t *data, off_t offset) const;
- virtual off_t write(const uint8_t *data, off_t offset);
+ virtual std::streampos read(uint8_t *data, std::streampos offset) const;
+ virtual std::streampos write(const uint8_t *data, std::streampos offset);
};
/**
@@ -129,10 +131,10 @@ class CowDiskImage : public DiskImage
void serialize(std::ostream &os);
void unserialize(Checkpoint *cp, const std::string &section);
- virtual off_t size() const;
+ virtual std::streampos size() const;
- virtual off_t read(uint8_t *data, off_t offset) const;
- virtual off_t write(const uint8_t *data, off_t offset);
+ virtual std::streampos read(uint8_t *data, std::streampos offset) const;
+ virtual std::streampos write(const uint8_t *data, std::streampos offset);
};
#endif // __DISK_IMAGE_HH__
diff --git a/src/dev/ide_disk.cc b/src/dev/ide_disk.cc
index 6c5ccdd86..bc7210d42 100644
--- a/src/dev/ide_disk.cc
+++ b/src/dev/ide_disk.cc
@@ -590,7 +590,7 @@ IdeDisk::startCommand()
switch (cmdReg.command) {
// Supported non-data commands
case WDSF_READ_NATIVE_MAX:
- size = image->size() - 1;
+ size = (uint32_t)image->size() - 1;
cmdReg.sec_num = (size & 0xff);
cmdReg.cyl_low = ((size & 0xff00) >> 8);
cmdReg.cyl_high = ((size & 0xff0000) >> 16);