/* devmem.c - Access physical addresses * * Copyright 2019 The Android Open Source Project USE_DEVMEM(NEWTOY(devmem, "<1>3", TOYFLAG_USR|TOYFLAG_BIN)) config DEVMEM bool "devmem" default y help usage: devmem ADDR [WIDTH [DATA]] Read/write physical address via /dev/mem. WIDTH is 1, 2, 4, or 8 bytes (default 4). */ #define FOR_devmem #include "toys.h" void devmem_main(void) { int writing = toys.optc == 3, page_size = getpagesize(), bytes = 4, fd; unsigned long long addr = atolx(toys.optargs[0]), data = 0, map_off, map_len; void *map, *p; // WIDTH? if (toys.optc>1) { int i; if (strlen(toys.optargs[1])!=1 || (i=stridx("1248", *toys.optargs[1]))==-1) error_exit("bad width: %s", toys.optargs[1]); bytes = 1<