Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6fa54fa2 authored by Colin Cross's avatar Colin Cross Committed by Android (Google) Code Review
Browse files

Merge "Accept address ranges in r" into honeycomb

parents 203bad59 2ad280f0
Loading
Loading
Loading
Loading
+43 −22
Original line number Diff line number Diff line
@@ -13,8 +13,10 @@ static int usage()
int r_main(int argc, char *argv[])
{
    int width = 4, set = 0, fd;
    unsigned addr, value;
    unsigned addr, value, endaddr = 0;
    unsigned long mmap_start, mmap_size;
    void *page;
    char *end;
    
    if(argc < 2) return usage();

@@ -31,6 +33,18 @@ int r_main(int argc, char *argv[])
    if(argc < 2) return usage();
    addr = strtoul(argv[1], 0, 16);

    end = strchr(argv[1], '-');
    if (end)
        endaddr = strtoul(end + 1, 0, 16);

    if (!endaddr)
        endaddr = addr + width - 1;

    if (endaddr <= addr) {
        fprintf(stderr, "invalid end address\n");
        return -1;
    }

    if(argc > 2) {
        set = 1;
        value = strtoul(argv[2], 0, 16);
@@ -42,14 +56,19 @@ int r_main(int argc, char *argv[])
        return -1;
    }
    
    page = mmap(0, 8192, PROT_READ | PROT_WRITE,
                MAP_SHARED, fd, addr & (~4095));
    mmap_start = addr & ~(PAGE_SIZE - 1);
    mmap_size = endaddr - mmap_start + 1;
    mmap_size = (mmap_size + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1);

    page = mmap(0, mmap_size, PROT_READ | PROT_WRITE,
                MAP_SHARED, fd, mmap_start);

    if(page == MAP_FAILED){
        fprintf(stderr,"cannot mmap region\n");
        return -1;
    }

    while (addr <= endaddr) {
        switch(width){
        case 4: {
            unsigned *x = (unsigned*) (((unsigned) page) + (addr & 4095));
@@ -70,5 +89,7 @@ int r_main(int argc, char *argv[])
            break;
        }
        }
        addr += width;
    }
    return 0;
}