Editing Hardware Registers
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
= 0xBC000000: Memory management = | = 0xBC000000: Memory management = | ||
Line 17: | Line 5: | ||
! Physical Address !! Size !! R/W !! Description | ! Physical Address !! Size !! R/W !! Description | ||
|- | |- | ||
| 0xBC000000 || 4 || RW || Memory Protection 0x08000000 -> 0x081FFFFFF | | 0xBC000000 || 4 || RW || Memory Protection 0x08000000 -> 0x081FFFFFF | ||
|- | |||
|} | |||
{| class="wikitable sortable" | |||
|- | |||
! Bit(s) !! Usage | |||
|- | |||
| 31 || 0x081C0000 -> 0x081FFFFFF Kernel Write Enable | |||
Bit | |||
|- | |- | ||
| | | 30 || 0x081C0000 -> 0x081FFFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 29 || 0x081C0000 -> 0x081FFFFFF User Write Enable | ||
|- | |- | ||
| | | 28 || 0x081C0000 -> 0x081FFFFFF User Read Enable | ||
|- | |- | ||
| | | 27 || 0x08180000 -> 0x081BFFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 26 || 0x08180000 -> 0x081BFFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 25 || 0x08180000 -> 0x081BFFFFF User Write Enable | ||
|- | |- | ||
| | | 24 || 0x08180000 -> 0x081BFFFFF User Read Enable | ||
|- | |- | ||
| | | 23 || 0x08140000 -> 0x0817FFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 22 || 0x08140000 -> 0x0817FFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 21 || 0x08140000 -> 0x0817FFFFF User Write Enable | ||
|- | |- | ||
| | | 20 || 0x08140000 -> 0x0817FFFFF User Read Enable | ||
|- | |- | ||
| | | 19 || 0x08100000 -> 0x0813FFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 18 || 0x08100000 -> 0x0813FFFFF Kernel Read Enable | ||
|- | |- | ||
| 17 || 0x08100000 -> 0x0813FFFFF User Write Enable | |||
|- | |- | ||
| | | 16 || 0x08100000 -> 0x0813FFFFF User Read Enable | ||
|- | |- | ||
| | | 15 || 0x080C0000 -> 0x080FFFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 14 || 0x080C0000 -> 0x080FFFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 13 || 0x080C0000 -> 0x080FFFFFF User Write Enable | ||
|- | |- | ||
| | | 12 || 0x080C0000 -> 0x080FFFFFF User Read Enable | ||
|- | |- | ||
| | | 11 || 0x08080000 -> 0x080BFFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 10 || 0x08080000 -> 0x080BFFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 9 || 0x08080000 -> 0x080BFFFFF User Write Enable | ||
|- | |- | ||
| | | 8 || 0x08080000 -> 0x080BFFFFF User Read Enable | ||
|- | |- | ||
| | | 7 || 0x08040000 -> 0x0807FFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 6 || 0x08040000 -> 0x0807FFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 5 || 0x08040000 -> 0x0807FFFFF User Write Enable | ||
|- | |- | ||
| 4 || 0x08040000 -> 0x0807FFFFF User Read Enable | |||
|- | |- | ||
| | | 3 || 0x08000000 -> 0x08003FFFF Kernel Write Enable | ||
|- | |- | ||
| | | 2 || 0x08000000 -> 0x08003FFFF Kernel Read Enable | ||
|- | |- | ||
| | | 1 || 0x08000000 -> 0x08003FFFF User Write Enable | ||
|- | |- | ||
| | | 0 || 0x08000000 -> 0x08003FFFF User Read Enable | ||
|- | |- | ||
| | |} | ||
{| class="wikitable sortable" | |||
|- | |||
! Physical Address !! Size !! R/W !! Description | |||
|- | |||
| 0xBC000004 || 4 || RW || Memory Protection 0x08200000 -> 0x083FFFFFF | |||
|- | |- | ||
| | |} | ||
{| class="wikitable sortable" | |||
|- | |- | ||
! Bit(s) !! Usage | |||
Bit | |||
|- | |- | ||
| | | 31 || 0x083C0000 -> 0x083FFFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 30 || 0x083C0000 -> 0x083FFFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 29 || 0x083C0000 -> 0x083FFFFFF User Write Enable | ||
|- | |- | ||
| | | 28 || 0x083C0000 -> 0x083FFFFFF User Read Enable | ||
|- | |- | ||
| | | 27 || 0x083C0000 -> 0x083BFFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 26 || 0x083C0000 -> 0x083BFFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 25 || 0x08380000 -> 0x083BFFFFF User Write Enable | ||
|- | |- | ||
| | | 24 || 0x08380000 -> 0x083BFFFFF User Read Enable | ||
|- | |- | ||
| | | 23 || 0x08340000 -> 0x0837FFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 22 || 0x08340000 -> 0x0837FFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 21 || 0x08340000 -> 0x0837FFFFF User Write Enable | ||
|- | |- | ||
| | | 20 || 0x08340000 -> 0x0837FFFFF User Read Enable | ||
|- | |- | ||
| | | 19 || 0x08300000 -> 0x0833FFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 18 || 0x08300000 -> 0x0833FFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 17 || 0x08300000 -> 0x0833FFFFF User Write Enable | ||
|- | |- | ||
| | | 16 || 0x08300000 -> 0x0833FFFFF User Read Enable | ||
|- | |- | ||
| | | 15 || 0x082C0000 -> 0x082FFFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 14 || 0x082C0000 -> 0x082FFFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 13 || 0x082C0000 -> 0x082FFFFFF User Write Enable | ||
|- | |- | ||
| | | 12 || 0x082C0000 -> 0x082FFFFFF User Read Enable | ||
|- | |- | ||
| | | 11 || 0x08280000 -> 0x082BFFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 10 || 0x08280000 -> 0x082BFFFFF Kernel Read Enable | ||
|- | |- | ||
| 9 || 0x08280000 -> 0x082BFFFFF User Write Enable | |||
|- | |- | ||
| | | 8 || 0x08280000 -> 0x082BFFFFF User Read Enable | ||
|- | |- | ||
| | | 7 || 0x08240000 -> 0x0827FFFFF Kernel Write Enable | ||
|- | |- | ||
| 6 || 0x08240000 -> 0x0827FFFFF Kernel Read Enable | |||
|- | |- | ||
| | | 5 || 0x08240000 -> 0x0827FFFFF User Write Enable | ||
|- | |- | ||
| 4 || 0x08240000 -> 0x0827FFFFF User Read Enable | |||
|- | |- | ||
| | | 3 || 0x08200000 -> 0x08203FFFF Kernel Write Enable | ||
|- | |- | ||
| | | 2 || 0x08200000 -> 0x08203FFFF Kernel Read Enable | ||
|- | |- | ||
| | | 1 || 0x08200000 -> 0x08203FFFF User Write Enable | ||
|- | |- | ||
| | | 0 || 0x08200000 -> 0x08203FFFF User Read Enable | ||
|- | |- | ||
| | |} | ||
{| class="wikitable sortable" | |||
|- | |- | ||
! Physical Address !! Size !! R/W !! Description | |||
|- | |- | ||
| | | 0xBC000008 || 4 || RW || Memory Protection 0x08400000 -> 0x085FFFFFF | ||
|- | |- | ||
|} | |} | ||
{| class="wikitable" | {| class="wikitable sortable" | ||
|- | |- | ||
! | ! Bit(s) !! Usage | ||
! | |||
|- | |- | ||
| 31 || 0x085c0000 -> 0x085FFFFFF Kernel Write Enable | |||
|- | |- | ||
| | | 30 || 0x085c0000 -> 0x085FFFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 29 || 0x085c0000 -> 0x085FFFFFF User Write Enable | ||
|- | |- | ||
| | | 28 || 0x085c0000 -> 0x085FFFFFF User Read Enable | ||
|- | |- | ||
| | | 27 || 0x08580000 -> 0x085BFFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 26 || 0x08580000 -> 0x085BFFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 25 || 0x08580000 -> 0x085BFFFFF User Write Enable | ||
|- | |- | ||
| | | 24 || 0x08580000 -> 0x085BFFFFF User Read Enable | ||
|- | |- | ||
| | | 23 || 0x08540000 -> 0x0857FFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 22 || 0x08540000 -> 0x0857FFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 21 || 0x08540000 -> 0x0857FFFFF User Write Enable | ||
|- | |- | ||
| | | 20 || 0x08540000 -> 0x0857FFFFF User Read Enable | ||
|- | |- | ||
| | | 19 || 0x08500000 -> 0x0853FFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 18 || 0x08500000 -> 0x0853FFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 17 || 0x08500000 -> 0x0853FFFFF User Write Enable | ||
|- | |- | ||
| | | 16 || 0x08500000 -> 0x0853FFFFF User Read Enable | ||
|- | |- | ||
| 15 || | | 15 || 0x084c0000 -> 0x084FFFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 14 || 0x084c0000 -> 0x084FFFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 13 || 0x084c0000 -> 0x084FFFFFF User Write Enable | ||
|- | |- | ||
| | | 12 || 0x084c0000 -> 0x084FFFFFF User Read Enable | ||
|- | |- | ||
| | | 11 || 0x08480000 -> 0x084BFFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 10 || 0x08480000 -> 0x084BFFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 9 || 0x08480000 -> 0x084BFFFFF User Write Enable | ||
|- | |- | ||
| | | 8 || 0x08480000 -> 0x084BFFFFF User Read Enable | ||
|- | |- | ||
| | | 7 || 0x08440000 -> 0x0847FFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 6 || 0x08440000 -> 0x0847FFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 5 || 0x08440000 -> 0x0847FFFFF User Write Enable | ||
|- | |- | ||
| | | 4 || 0x08440000 -> 0x0847FFFFF User Read Enable | ||
|- | |- | ||
| | | 3 || 0x08400000 -> 0x08403FFFF Kernel Write Enable | ||
|- | |- | ||
| | | 2 || 0x08400000 -> 0x08403FFFF Kernel Read Enable | ||
|- | |- | ||
| | | 1 || 0x08400000 -> 0x08403FFFF User Write Enable | ||
|- | |- | ||
| | | 0 || 0x08400000 -> 0x08403FFFF User Read Enable | ||
|- | |- | ||
| | |} | ||
{| class="wikitable sortable" | |||
|- | |- | ||
! Physical Address !! Size !! R/W !! Description | |||
|- | |- | ||
| | | 0xBC00000C || 4 || RW || Memory Protection 0x08600000 -> 0x087FFFFFF | ||
|- | |- | ||
| | |} | ||
{| class="wikitable sortable" | |||
|- | |- | ||
! Bit(s) !! Usage | |||
|- | |- | ||
| | | 31 || 0x087c0000 -> 0x087FFFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 30 || 0x087c0000 -> 0x087FFFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 29 || 0x087c0000 -> 0x087FFFFFF User Write Enable | ||
|- | |- | ||
| | | 28 || 0x087c0000 -> 0x087FFFFFF User Read Enable | ||
|- | |- | ||
| | | 27 || 0x08780000 -> 0x087BFFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 26 || 0x08780000 -> 0x087BFFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 25 || 0x08780000 -> 0x087BFFFFF User Write Enable | ||
|- | |- | ||
| | | 24 || 0x08780000 -> 0x087BFFFFF User Read Enable | ||
|- | |- | ||
| | | 23 || 0x08740000 -> 0x0877FFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 22 || 0x08740000 -> 0x0877FFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 21 || 0x08740000 -> 0x0877FFFFF User Write Enable | ||
|- | |- | ||
| | | 20 || 0x08740000 -> 0x0877FFFFF User Read Enable | ||
|- | |- | ||
| | | 19 || 0x08700000 -> 0x0873FFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 18 || 0x08700000 -> 0x0873FFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 17 || 0x08700000 -> 0x0873FFFFF User Write Enable | ||
|- | |- | ||
| | | 16 || 0x08700000 -> 0x0873FFFFF User Read Enable | ||
|- | |- | ||
| | | 15 || 0x086c0000 -> 0x086FFFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 14 || 0x086c0000 -> 0x086FFFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 13 || 0x086c0000 -> 0x086FFFFFF User Write Enable | ||
|- | |- | ||
| | | 12 || 0x086c0000 -> 0x086FFFFFF User Read Enable | ||
|- | |- | ||
| | | 11 || 0x08680000 -> 0x086BFFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 10 || 0x08680000 -> 0x086BFFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 9 || 0x08680000 -> 0x086BFFFFF User Write Enable | ||
|- | |- | ||
| 8 || 0x08680000 -> 0x086BFFFFF User Read Enable | |||
|- | |- | ||
| | | 7 || 0x08640000 -> 0x0867FFFFF Kernel Write Enable | ||
|- | |- | ||
| | | 6 || 0x08640000 -> 0x0867FFFFF Kernel Read Enable | ||
|- | |- | ||
| | | 5 || 0x08640000 -> 0x0867FFFFF User Write Enable | ||
|- | |- | ||
| 4 || 0x08640000 -> 0x0867FFFFF User Read Enable | |||
|- | |- | ||
| | | 3 || 0x08600000 -> 0x08603FFFF Kernel Write Enable | ||
|- | |- | ||
| | | 2 || 0x08600000 -> 0x08603FFFF Kernel Read Enable | ||
|- | |- | ||
| | | 1 || 0x08600000 -> 0x08603FFFF User Write Enable | ||
|- | |- | ||
| | | 0 || 0x08600000 -> 0x08603FFFF User Read Enable | ||
|- | |- | ||
| | |} | ||
{| class="wikitable sortable" | |||
|- | |- | ||
! Physical Address !! Size !! R/W !! Description | |||
|- | |- | ||
| | | 0xBC000030 || 32 || RW || Hardware register user read/write enable (range unknown). Used to access profiler from an user. | ||
|- | |- | ||
| | | 0xBC000034 || 32 || RW || Hardware register user read/write enable (range unknown) | ||
|- | |- | ||
| | | 0xBC000038 || 32 || RW || Hardware register user read/write enable (range unknown) | ||
|- | |- | ||
| | | 0xBC00003C || 32 || RW || Hardware register user read/write enable (range unknown) | ||
|- | |- | ||
| | | 0xBC000040 || 32 || RW || Hardware register user read/write enable (range unknown) | ||
|- | |- | ||
| | | 0xBC000044 || 32 || RW || Hardware register user read/write enable (range unknown) | ||
|- | |- | ||
| | | 0xBC000048 || 32 || RW || Hardware register user read/write enable (range unknown) | ||
|- | |- | ||
| | | 0xBC00004C || 32 || RW || Hardware register user read/write enable (range unknown) | ||
|- | |- | ||
| | |} | ||
Granularity that these work on is not known. For each 1 bit an IO range is exposed to usermode for Read/Write. To find the usermode address, subtract 0x60000000 from the kernelmode one. | |||
{| class="wikitable sortable" | |||
|- | |- | ||
! Physical Address !! Size !! R/W !! Description | |||
|- | |- | ||
| | | 0xBC000050 || 32 || ? || Reads 0x07EFFFFF | ||
|- | |- | ||
|} | |} | ||
= 0xBC100000: System Controller = | |||
= 0xBC200000: ? = | |||
= 0xBC300000: Interrupt Manager = | |||
= 0xBC400000: Profiler = | |||
= 0xBC500000: Hardware Timer = | = 0xBC500000: Hardware Timer = | ||
Line 838: | Line 390: | ||
|- | |- | ||
| 0xBC50003C || 4 || RW || Same as above, for hardware timer 3 | | 0xBC50003C || 4 || RW || Same as above, for hardware timer 3 | ||
|- | |- | ||
| 0xBC5003D0 || 4 || RW || Same as 0xBC500000, but with the current PSP's system time value. A timer's current count is computed by subtracting the timer's base time (the init time point) from this value. | | 0xBC5003D0 || 4 || RW || Same as 0xBC500000, but with the current PSP's system time value. A timer's current count is computed by subtracting the timer's base time (the init time point) from this value. | ||
Line 873: | Line 417: | ||
|- | |- | ||
|} | |} | ||
= 0xBC700000: ? = | |||
= 0xBC800000: DMACPlus = | = 0xBC800000: DMACPlus = | ||
Line 999: | Line 545: | ||
|} | |} | ||
= 0xBC900000: DMAC related = | |||
= 0xBC900000 | |||
= 0xBCA00000: DMAC related = | |||
= 0xBCC00000: VME Control = | = 0xBCC00000: VME Control = | ||
= 0xBD000000: ? = | |||
= 0xBD100000: NAND Flash = | = 0xBD100000: NAND Flash = | ||
= 0xBD200000: ? = | |||
= 0xBD200000: | |||
= 0xBD300000: ? = | |||
= 0xBD400000: Graphics Engine = | = 0xBD400000: Graphics Engine = | ||
Line 1,360: | Line 579: | ||
R bit 0x200: 1 = is at depth 2 of calls | R bit 0x200: 1 = is at depth 2 of calls | ||
|- | |- | ||
| 0xBD400104 || 4 || RW? || | | 0xBD400104 || 4 || RW? || Unknown (accessible through sceGeSet/GetReg() but unused) | ||
|- | |- | ||
| 0xBD400108 || 4 || RW || Address of the display list currently being run | | 0xBD400108 || 4 || RW || Address of the display list currently being run | ||
Line 1,384: | Line 603: | ||
| 0xBD400300 || 4 || RW || Unknown (accessible through sceGeSet/GetReg() but unused) | | 0xBD400300 || 4 || RW || Unknown (accessible through sceGeSet/GetReg() but unused) | ||
|- | |- | ||
| 0xBD400304 || 4 || | | 0xBD400304 || 4 || R || Current interrupt status? | ||
|- | |- | ||
| 0xBD400308 || 4 || RW || | | 0xBD400308 || 4 || RW || Currently accepted interrupts? (1 = SIGNAL, 2 = END, 4 = FINISH, 8 = ERROR) | ||
|- | |- | ||
| 0xBD40030C || 4 || W || | | 0xBD40030C || 4 || W? || Set to the value of 0xBD400308 on init & reset | ||
|- | |- | ||
| 0xBD400310 || 4 || W || | | 0xBD400310 || 4 || W? || Set current interrupt status? Set to the value of 0xBD400308 on init & reset | ||
|- | |- | ||
| 0xBD400400 || 4 || RW || Set to 4 when the used edram size is 0x00200000 and 2 when it's 0x00400000 (!) | | 0xBD400400 || 4 || RW || Set to 4 when the used edram size is 0x00200000 and 2 when it's 0x00400000 (!) | ||
Line 1,412: | Line 631: | ||
= 0xBD500000: Graphics Engine EDRAM = | = 0xBD500000: Graphics Engine EDRAM = | ||
= 0xBD600000: ? = | |||
= | = 0xBD700000: ? = | ||
= 0xBD800000: ? = | |||
= 0xBD800000: | |||
= 0xBDE00000: KIRK = | = 0xBDE00000: KIRK = | ||
= 0xBDF00000: ? = | |||
= 0xBE000000: Audio = | |||
= 0xBE100000: ? = | |||
= 0xBE140000: LCDC = | |||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,909: | Line 654: | ||
! Description | ! Description | ||
|- | |- | ||
| | | 0xBE140000 || 4 || RW || First LCDC controller enable | ||
|- | |- | ||
|} | |} | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Bit(s) | ||
! Usage | |||
|- | |- | ||
| | | 0-1 || 3: enable first LCDC controller (tachyon version < 0x800000; otherwise it's set to 0) | ||
|- | |- | ||
|} | |} | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,006: | Line 672: | ||
! Read/write | ! Read/write | ||
! Description | ! Description | ||
|- | |- | ||
| 0xBE140004 || 4 || RW || Synchronization difference: (xsync / zoom) - ysync | | 0xBE140004 || 4 || RW || Synchronization difference: (xsync / zoom) - ysync | ||
Line 2,072: | Line 734: | ||
|- | |- | ||
| 0xBE140198 || 4 || RW || Unknown (0x910 - 0xE38) | | 0xBE140198 || 4 || RW || Unknown (0x910 - 0xE38) | ||
|- | |- | ||
| 0xBE140200 || 4 || W || Set to 1 on initialization | | 0xBE140200 || 4 || W || Set to 1 on initialization | ||
Line 2,081: | Line 739: | ||
|} | |} | ||
= 0xBE200000: | = 0xBE200000: ? = | ||
= 0xBE240000: GPIO = | = 0xBE240000: GPIO = | ||
= 0xBE400000: UART 1-4 = | |||
= 0xBE500000: UART 5-8 = | |||
= 0xBFC00000: MIPS Reset Vector = | |||
= 0xBFF00000: NAND DMA buffer = | = 0xBFF00000: NAND DMA buffer = | ||