Difference between revisions of "ARM7 BIOS"

From DSiBrew
Jump to navigation Jump to search
m (Undo revision 3999 by Lu (talk) SPAM/Vandalism)
Line 1: Line 1:
Finally, to the oldest children, we possess http://www.weddingdressesdesignerstore.com/ we possess the H&M youthful broad range
+
== BIOS and Bootrom ==
even additional of the "fashion flair", http://www.solbrillerbillige.com/mens-sunglasses/porsche-sunglasses.html exceptional for each and every
+
The ARM7 BIOS is split into two parts:
Secondly - the following age celebration up goes http://www.solbrillerbillige.com/mens-sunglasses/prada-sunglasses.html from 18 weeks more mature to 8 many years old
+
 
For all individuals girls and guys http://www.solbrillerbillige.com/womens-sunglasses/ray-ban-sunglasses.html who are looking forward
+
# the actual BIOS which is 0x8000 bytes long and starts at 0x0
This producer has captured the hearts http://www.solbrillerbillige.com/mens-sunglasses/d-g-sunglasses.html millions of people, residing throughout the globe
+
# the bootrom which is probably also 0x8000 bytes long and starts at 0x8000
 +
 
 +
*The contents of 1) can only be read by instructions within the BIOS. It can therefore be dumped by applying some IRQ timer trick to find a usable ''ldr'' instruction or by just using the memcpy at 0x6bb0 with the usual arguments.
 +
*The contents of 2) can only be read until bit 0 in register '''0x04004000 or 0x04004001 (?)''' is cleared. It is disabled after it has been executed and can never be read again until the device is reset. It might contains keys and has not been dumped yet.
 +
 
 +
== SVC list ==
 +
The BIOS provides the following SVC functions. Every SVC not mentioned here just jumps to an infinite loop at 0x16c (b .)
 +
 
 +
{| class="wikitable sortable" width="55%"
 +
|-
 +
! SVC
 +
! NAME
 +
! DESCRIPTION
 +
|-
 +
|01
 +
|n/a
 +
|n/a
 +
|-
 +
|02
 +
|n/a
 +
|n/a
 +
|- 
 +
|03
 +
|WaitByLoop
 +
|n/a
 +
|-
 +
|04
 +
|IntrWait
 +
|n/a
 +
|-
 +
|05
 +
|VSyncWait
 +
|n/a
 +
|-
 +
|06
 +
|HaltMaybe
 +
|n/a
 +
|-
 +
|07
 +
|StopMaybe
 +
|n/a
 +
|-
 +
|08
 +
|n/a
 +
|n/a
 +
|-
 +
|09
 +
|n/a
 +
|n/a
 +
|-
 +
|0b
 +
|CPUSet
 +
|n/a
 +
|-
 +
|0c
 +
|CpuFastSet
 +
|n/a
 +
|-
 +
|0d
 +
|n/a
 +
|n/a
 +
|-
 +
|0e
 +
|CRC16
 +
|n/a
 +
|-
 +
|10
 +
|n/a
 +
|n/a
 +
|-
 +
|11
 +
|n/a
 +
|n/a
 +
|-
 +
|12
 +
|n/a
 +
|n/a
 +
|-
 +
|13
 +
|n/a
 +
|n/a
 +
|-
 +
|14
 +
|n/a
 +
|n/a
 +
|-
 +
|15
 +
|n/a
 +
|n/a
 +
|-
 +
|19
 +
|n/a
 +
|n/a
 +
|-
 +
|1a
 +
|GetSinTable
 +
|n/a
 +
|-
 +
|1b
 +
|GetPitchTable
 +
|n/a
 +
|-
 +
|1c
 +
|GetVolumeTable
 +
|n/a
 +
|-
 +
|1d
 +
|n/a
 +
|n/a
 +
|-
 +
|1f
 +
|CustomHalt
 +
|n/a
 +
|-
 +
|20
 +
|n/a
 +
|n/a
 +
|-
 +
|21
 +
|n/a
 +
|n/a
 +
|-
 +
|22
 +
|n/a
 +
|n/a
 +
|-
 +
|23
 +
|n/a
 +
|n/a
 +
|-
 +
|24
 +
|SHA1_init
 +
|n/a
 +
|-
 +
|25
 +
|SHA1_update
 +
|n/a
 +
|-
 +
|26
 +
|SHA1_finalize
 +
|n/a
 +
|-
 +
|27
 +
|SHA1
 +
|n/a
 +
|-
 +
|28
 +
|SHA1_compare
 +
|n/a
 +
|-
 +
|29
 +
|SHA1_random_maybe
 +
|n/a
 +
|}
 +
 
 +
 
 +
== reset vectors et al ==
 +
 
 +
The first few words of the BIOS cannot be dumped. You can deduce them by tracing the code though (all values are noted in big endian here):
 +
ea000006
 +
ea000006
 +
ea00001f
 +
ea000004
 +
  ea000003
 +
eafffffe
 +
ea000013
 +
ea000000

Revision as of 15:26, 15 July 2011

BIOS and Bootrom

The ARM7 BIOS is split into two parts:

  1. the actual BIOS which is 0x8000 bytes long and starts at 0x0
  2. the bootrom which is probably also 0x8000 bytes long and starts at 0x8000
  • The contents of 1) can only be read by instructions within the BIOS. It can therefore be dumped by applying some IRQ timer trick to find a usable ldr instruction or by just using the memcpy at 0x6bb0 with the usual arguments.
  • The contents of 2) can only be read until bit 0 in register 0x04004000 or 0x04004001 (?) is cleared. It is disabled after it has been executed and can never be read again until the device is reset. It might contains keys and has not been dumped yet.

SVC list

The BIOS provides the following SVC functions. Every SVC not mentioned here just jumps to an infinite loop at 0x16c (b .)

SVC NAME DESCRIPTION
01 n/a n/a
02 n/a n/a
03 WaitByLoop n/a
04 IntrWait n/a
05 VSyncWait n/a
06 HaltMaybe n/a
07 StopMaybe n/a
08 n/a n/a
09 n/a n/a
0b CPUSet n/a
0c CpuFastSet n/a
0d n/a n/a
0e CRC16 n/a
10 n/a n/a
11 n/a n/a
12 n/a n/a
13 n/a n/a
14 n/a n/a
15 n/a n/a
19 n/a n/a
1a GetSinTable n/a
1b GetPitchTable n/a
1c GetVolumeTable n/a
1d n/a n/a
1f CustomHalt n/a
20 n/a n/a
21 n/a n/a
22 n/a n/a
23 n/a n/a
24 SHA1_init n/a
25 SHA1_update n/a
26 SHA1_finalize n/a
27 SHA1 n/a
28 SHA1_compare n/a
29 SHA1_random_maybe n/a


reset vectors et al

The first few words of the BIOS cannot be dumped. You can deduce them by tracing the code though (all values are noted in big endian here):

ea000006
ea000006
ea00001f
ea000004
ea000003
eafffffe
ea000013
ea000000