Annotation of nono/vm/zram.cpp, revision 1.1.1.1

1.1       root        1: //
                      2: // nono
                      3: // Copyright (C) 2018 [email protected]
                      4: //
                      5: 
                      6: #include "zram.h"
                      7: 
                      8: //
                      9: // 3ポート共有 RAM
                     10: //
                     11: // ZRAM はロングワード単位でホストバイトオーダ配置なので、
                     12: // バイトアクセス、ワードアクセス時は HLB(), HLW() マクロ使用のこと。
                     13: //
                     14: 
                     15: ZRAMDevice *gZRAM;
                     16: 
                     17: ZRAMDevice::ZRAMDevice()
                     18: {
                     19:        logname = "zram";
                     20:        devname = "ZRAM";
                     21:        devaddr = 0x71000000;
                     22:        devlen = 128 * 1024;
                     23: 
                     24:        ram = new uint8[devlen];
                     25: }
                     26: 
                     27: ZRAMDevice::~ZRAMDevice()
                     28: {
                     29: }
                     30: 
                     31: // たぶん 128KB で折り返しイメージが見えるはず。要確認。
                     32: 
                     33: uint64
                     34: ZRAMDevice::Read8(uint32 addr)
                     35: {
                     36:        std::unique_lock<std::mutex> lock(mtx);
                     37: 
                     38:        uint32 an = addr % devlen;
                     39:        uint32 data = ram[HLB(an)];
                     40:        return data;
                     41: }
                     42: 
                     43: uint64
                     44: ZRAMDevice::Read16(uint32 addr)
                     45: {
                     46:        std::unique_lock<std::mutex> lock(mtx);
                     47: 
                     48:        uint32 an = addr % devlen;
                     49:        uint32 data = *(uint16 *)&ram[HLW(an)];
                     50:        return data;
                     51: }
                     52: 
                     53: uint64
                     54: ZRAMDevice::Read32(uint32 addr)
                     55: {
                     56:        std::unique_lock<std::mutex> lock(mtx);
                     57: 
                     58:        uint32 an = addr % devlen;
                     59:        uint32 data = *(uint32 *)&ram[an];
                     60:        return data;
                     61: }
                     62: 
                     63: uint64
                     64: ZRAMDevice::Write8(uint32 addr, uint32 data)
                     65: {
                     66:        std::unique_lock<std::mutex> lock(mtx);
                     67: 
                     68:        uint32 an = addr % devlen;
                     69:        ram[HLB(an)] = data;
                     70:        return 0;
                     71: }
                     72: 
                     73: uint64
                     74: ZRAMDevice::Write16(uint32 addr, uint32 data)
                     75: {
                     76:        std::unique_lock<std::mutex> lock(mtx);
                     77: 
                     78:        uint32 an = addr % devlen;
                     79:        *(uint16 *)&ram[HLW(an)] = data;
                     80:        return 0;
                     81: }
                     82: 
                     83: uint64
                     84: ZRAMDevice::Write32(uint32 addr, uint32 data)
                     85: {
                     86:        std::unique_lock<std::mutex> lock(mtx);
                     87: 
                     88:        uint32 an = addr % devlen;
                     89:        *(uint32 *)&ram[an] = data;
                     90:        return 0;
                     91: }
                     92: 
                     93: uint64
                     94: ZRAMDevice::Peek8(uint32 addr)
                     95: {
                     96:        std::unique_lock<std::mutex> lock(mtx);
                     97: 
                     98:        uint32 an = addr % devlen;
                     99:        return ram[HLB(an)];
                    100: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.