Sysroot

From Vita Development Wiki
Jump to: navigation, search

The sysroot buffer is a 0x100 sized buffer passed to the secure kernel bootloader in the scratch space and contains all sorts of flags and system parameters. This buffer is copied to the secure kernel, the non-secure kernel loader, and the non-secure kernel and is used by many functions to check for features that are enabled for the system.

Offset Size Description
0x2C 0x8 Bitfield flags 1
0x40 0x20 Bitfield flags 2 (DIP switches)
0x60 0x4 DRAM base paddr
0x64 0x4 DRAM size
0x6C 0x4 Boot type indicator (0x20000 on resume), 0x1 = no suspend/boot logo
0x70 0x10 Some serial
0x80 0x4 secure_kernel.enp raw data paddr (optional)
0x84 0x4 secure_kernel.enp size (optional)
0x90 0x4 kprx_auth_sm.self raw data paddr
0x94 0x4 kprx_auth_sm.self size
0x98 0x4 prog_rvk.srvk raw data paddr
0x9C 0x4 prog_rvk.srvk size
0xA0 0x2 Unknown
0xA2 0x2 Device type
0xA4 0x4 Unknown
0xB0 0x10 Session ID
0xC4 0x4 Boot type indicator (0x80 on resume)
0xD0 0x4 Saved context paddr
0xF8 0x4 BootLoader Revision

Bitfield Flags

DIP Switches

To convert the bit number to the offset and bit: offset = start_offset + (bit_num / 32) * 4, bit = (bit_num % 32) << 1

CP Information

Bits 0-31 is a 32-bit integer of the current time on the devkit CP clock. This is duplicated in bits 64-95. Bits 32-47 is a 16-bit integer of the CP version and bits 48-63 is a 16-bit integer of the CP build ID. All integers are little-endian. On non-devkits, these fields are zero. Bits 0-63 are also usable as general purpose switches exposed with sceKernelSetDipsw, sceKernelClearDipsw, and sceKernelCheckDipsw but they do not change anything in hardware (only cached values are overwritten).

User Flags

Bits 96-127 does not seem to be used in the kernel.

SDK Flags

Bits 128-159 are used to store devkit flags. It does not appear to be used in other models.

Bit Description
159 Devkit in Development Mode

Shell Flags

Bits 160-191 are used for SceShell flags.

Bit Description

Debug Flags

Bits 192-223 are for various debugging options.

Bit Description
197 Enable kernel console logging
211 Enable user UART console logging

System Flags

Bits 224-255 are used for various system options.

Bit Description