ErrDisp: Difference between revisions

Guiand (talk | contribs)
Added preliminary information about errinfo format
Guiand (talk | contribs)
m Added errdisp output format 4 information
Line 20: Line 20:
|}
|}


= errinfo =
= output, where *((u8*)errinfo) == 4 =
Note: the following data is still only partly reliable
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Type
! Entry
! Name
! Format string
! Info
! Format args
! Description
|-
|-
| 1 byte
| PID
| 0x%08X_0x%08X
| 0x41900000, *(u32*)(errinfo + 0x10)
| Process ID
|-
| REV
| %d
| *(u16*)(errinfo + 2) | (*(u8*)(errinfo + 1) << 16)
| ?
| ?
| unknown
|-
|-
| 1 byte
| AID
| ?
| 0x%08X_0x%08X
| unknown
| 0x41900000, *(u32*)(errinfo + 0x18)
| Application ID?
|-
| RSL
| 0x%08X
| *(u32*)(errinfo + 4)
| Error code
|-
| Level
| %d
| *(u32*)(errinfo + 4) & 0x80000000 ? (*(u32*)(errinfo + 4) >> 0x27) - 0x20 :  *(u32*)(errinfo + 4) >> 0x27
| Error code level
|-
|-
| 2 bytes
| Summary
|  
| %d
| The type of error info struct (??)
| (*(u32*)(errinfo + 4) & 0x7E00000) >> 21
| Error code summary
|-
|-
| 4 bytes
| Module
|  
| %d
| The return code of the errored function (?? - Inconsistent)
| (*(u32*)(errinfo + 4) & 0x3FC00) >> 10
| Error code module
|-
|-
| 4 bytes
| Desc
| caller_ptr
| %d
| The contents of the LR register - where the error was called from
| (*(u32*)(errinfo + 4) << 22) >> 22
| Error code description
|-
|-
| 4 bytes
| ?
| process_id
| %0.*s
| The ID/Handle of the running process
| 0x2E, for (int i = 0; i < 2; i++) (errinfo + (((i << 3) - i) + (i << 4)) << 1) + 0x20
| ?
|-
| Datetime
| %04d/%02d/%02d %02d:%02d:%02d
| ?
| ?
|}
|}