diff options
author | root <root@ppcg5.localdomain> | 2007-12-02 13:41:14 +1100 |
---|---|---|
committer | root <root@ppcg5.localdomain> | 2007-12-02 13:41:14 +1100 |
commit | b1a91e805837ac5841460c279775eebebdeca92e (patch) | |
tree | 1f3e24862b26a72c84ea6b5be5b27759d508651e | |
parent | e11891f14961f8cfe5f4aacc03e726252de84e32 (diff) |
add register setting
-rw-r--r-- | radeontool.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/radeontool.c b/radeontool.c index 55e958e..5bc8cc5 100644 --- a/radeontool.c +++ b/radeontool.c @@ -73,7 +73,7 @@ static void radeon_set32(unsigned long offset, const char *name, unsigned int va printf("internal error\n"); exit(-2); }; -#ifdef __powerpc__ +#if 0 //def __powerpc__ __asm__ __volatile__ ("stwbrx %1,%2,%3\n\t" "eieio" : "=m" (*((volatile unsigned int *)radeon_cntl_mem+offset)) @@ -358,10 +358,19 @@ void radeon_reg_match(const char *pattern) void radeon_reg_set(const char *name, unsigned value) { int i; + unsigned long address; + + if (name[0]=='0' && name[1]=='x') { + address = strtoul(&(name[2]), NULL, 16); + printf("OLD: %s (%04x)\t0x%08x\n", name, address, radeon_get32(address, name)); + radeon_set32(address, name, value); + printf("NEW: %s (%04x)\t0x%08x\n", name, address, radeon_get32(address, name)); + return; + } for (i=0;i<sizeof(reg_list)/sizeof(reg_list[0]);i++) { if (fnmatch(name, reg_list[i].name, 0) == 0) { const char *name = reg_list[i].name; - unsigned address = reg_list[i].address; + address = reg_list[i].address; printf("OLD: %s (%04x)\t0x%08x\n", name, address, radeon_get32(address, name)); radeon_set32(address, name, value); printf("NEW: %s (%04x)\t0x%08x\n", name, address, radeon_get32(address, name)); |