Commit graph

214 commits

Author SHA1 Message Date
Michael Scire
32bd5b3a73 Fix LP0 entry. Exit still fails in warmboot bin. 2018-03-10 18:57:17 -08:00
Michael Scire
ab2b8e4db5 Fix CpuSuspend not making it to finalize_powerdown() 2018-03-09 23:56:48 -08:00
Michael Scire
c2676c359c Fix CAR primitives 2018-03-09 15:40:11 -08:00
Michael Scire
88c4dfd444 Fix flow controller set functions 2018-03-09 14:56:16 -08:00
TuxSH
3f627798e7 Fix and/bic inversions in finalize_powerdown 2018-03-09 22:56:41 +01:00
TuxSH
3d72183471 Add 4.x configitem stuff 2018-03-09 12:47:58 +01:00
Michael Scire
1ffa239b5a Fix async expMod output + smcUnwrapAesWrappedTitlekey 2018-03-08 19:48:35 -08:00
Michael Scire
7e780301de Fix AES-GCM code. 2018-03-08 17:26:42 -08:00
Michael Scire
8e5228866c Fix smcComputeCmac, generally improve userpage cache usage 2018-03-08 04:59:00 -08:00
Michael Scire
ec8f27f1be Fix AES ECB encryption not encrypting 2018-03-08 03:16:50 -08:00
TuxSH
b35c418558 memcpy(x, NULL, 0) is undefined behavior 2018-03-08 11:17:46 +01:00
Michael Scire
3d8ff446ad Implement BootReason config 2018-03-08 01:48:57 -08:00
TuxSH
ff9322a468 Use and adapt the UART driver from hekate/hwinit 2018-03-08 01:02:45 +01:00
TuxSH
a409016a88 Fix fuse_get_hardware_type for 4.x 2018-03-07 23:24:38 +01:00
TuxSH
d5bb96c0f8 Fix and with mask issue in smc_user.c 2018-03-07 19:24:52 +01:00
Mike H
22f6c27654
Fix up comment 2018-03-07 16:11:53 +00:00
TuxSH
54fac349f2 Fix user_generate_specific_aes_key wrong register use 2018-03-07 15:50:50 +01:00
TuxSH
4f0e8b8467 Fix bug in user_generate_specific_aes_key, add other read/write le/be funcs 2018-03-07 15:11:53 +01:00
TuxSH
71f01aaa43 Fix freudian slip 2018-03-07 14:34:47 +01:00
Michael Scire
6592744b3b Add debug region to mapped memory 2018-03-07 04:00:19 -08:00
Michael Scire
b26b8e1f5c Fix smcConfigureCarveout 2018-03-07 03:45:27 -08:00
Michael Scire
d4c1e0b982 Merge branch 'master' of https://github.com/SciresM/Atmosphere-NX 2018-03-07 03:44:37 -08:00
Michael Scire
11e694d15c Fix SMMU Enable preventing FS from talking to NAND MMIO 2018-03-07 03:37:11 -08:00
TuxSH
d2b1febb43 Implement dbg log interface 2018-03-06 01:29:06 +01:00
TuxSH
a65d380889 Make enum names consistent 2018-03-05 23:59:46 +01:00
TuxSH
827280ca12 Fix lock_try_acquire(&g_is_user_smc_in_progress) calls 2018-03-05 21:07:09 +01:00
Michael Scire
6b10c21a10 Default kernel carveout is ID 4, not 5 2018-03-05 03:27:24 -08:00
TuxSH
5e75d8b2bd Fix func_copy null deref (?) 2018-03-05 09:41:39 +01:00
Michael Scire
ffd0181aa1 Fix Stack Overflow in SMC handler 2018-03-04 19:07:17 -08:00
Michael Scire
1fa64fccbf Add pre-defined panic utilities 2018-03-04 17:23:54 -08:00
TuxSH
4c38be1560 Fix lock clear in warmboot_main 2018-03-04 21:57:25 +01:00
TuxSH
3e128a8b3e Add TI charger stuff to warmboot_main, add 4.x hw_type stuff as well 2018-03-04 14:04:49 +01:00
TuxSH
ca80408349 Fix latest commit and set MAILBOX_NX_SECMON_BOOT_TIME 2018-03-04 00:36:40 +01:00
Michael Scire
58036dac0b Fix coldboot init (presentations lie) 2018-03-03 12:22:50 -08:00
TuxSH
a6c7a2c57e Refactor 32-bit register definitions 2018-03-03 20:23:13 +01:00
TuxSH
c0f99fcd1c Fix invalidate_icache_all dsb correctness 2018-03-03 20:03:52 +01:00
TuxSH
3d974857e4 warmboot_main: fix panic reason in panic code 2018-03-03 19:49:25 +01:00
TuxSH
4a2c9229ee Fix warmboot vs cpu_on check 2018-03-03 19:43:44 +01:00
TuxSH
03c1ad7119 Add most of warmboot_main 2018-03-03 19:31:22 +01:00
TuxSH
be6b67669f Finish writing warmboot _crt0_ 2018-03-03 16:58:23 +01:00
Michael Scire
48e8d9c7de Fix bugs required to successfully hand off to kernel 2018-03-03 06:15:46 -08:00
TuxSH
93864f2289 Use the boot critical section 2018-03-03 03:43:46 +01:00
TuxSH
92d2abaf1c Fix section alignment, attempt to clean up the crt0 a bit 2018-03-03 02:02:10 +01:00
Michael Scire
661bcaa3ec Change 'success' panic location to end of coldboot_main() 2018-03-02 15:09:51 -08:00
Michael Scire
102fb5004f Cleanup TODOs, implement bootconfig SCR_EL3 bit setting 2018-03-02 15:04:16 -08:00
TuxSH
bf63a077b1 Implement critical section (Lamport's Baker s algorithm)...
thanks @fincs for sample code
2018-03-02 23:37:36 +01:00
Michael Scire
301b166684 Implement CPU state init, fix bug in cpu_context restore 2018-03-02 14:16:54 -08:00
Michael Scire
a292e95c2f Finish bootup_misc_mmio() - Cur build gets to end of pk2ldr. 2018-03-02 13:44:21 -08:00
Michael Scire
ca7b441079 Add call to se_generate_stored_vector() before validating 2018-03-02 12:59:12 -08:00
Michael Scire
3388198a26 Add coldboot mmio init (for non 4.x), required for FLOW writes to succeed. 2018-03-02 12:45:37 -08:00
Michael Scire
e7e62ef90b Implement half of bootup_misc_mmio() 2018-03-02 12:16:30 -08:00
Michael Scire
b3dbfd8ee0 Update pk2ldr outline, prepare for bootup_misc_mmio() impl 2018-03-02 11:28:05 -08:00
Michael Scire
303e189559 Implement a few TODOs with CAR driver. 2018-03-01 23:33:43 -08:00
Michael Scire
5f7308efd1 Implement Clock/Reset Driver. 2018-03-01 22:50:07 -08:00
TuxSH
cad9cdc6e0 Reintroduce unmap_* in package2.c 2018-03-02 07:33:47 +01:00
Michael Scire
78bee60485 Fix dangling comments 2018-03-01 21:24:22 -08:00
Michael Scire
7b6d15ec36 Fix up package2.c, current build makes it to the panic() on hardware 2018-03-01 21:15:19 -08:00
Michael Scire
2390df4d07 Fix start.s to pass reloc_list properly to package2ldr 2018-03-01 20:39:49 -08:00
Michael Scire
0a80a7caf5 Fix coldboot init, Exosphere makes it to PK2LDR in this commit. 2018-03-01 20:10:05 -08:00
TuxSH
63d0b08ac4 Rewrite relocation stuff 2018-03-02 02:47:19 +01:00
TuxSH
6903b20579 Fix wrong subsection name 2018-03-01 21:28:50 +01:00
TuxSH
82f10b4320 Implements missings parts of pk2ldr, refactor relocation a bit 2018-03-01 19:11:09 +01:00
TuxSH
568781bc7e Strongly validate SPL's buffer address 2018-03-01 12:35:02 +01:00
Michael Scire
9553c69c8f Properly detect PK21 master key rev. 2018-03-01 03:28:34 -08:00
Michael Scire
205d3b8b80 Fix PK2LDR bugs, Fix SE bugs 2018-03-01 03:25:12 -08:00
TuxSH
7850d3fd57 Put the loaded bootconfig in the evt page 2018-03-01 11:06:55 +01:00
Michael Scire
b67ce08f84 Fix Modulus Exponentiation in SE driver 2018-03-01 02:00:39 -08:00
Michael Scire
4025781f1c Make clear_bss work regardless of load address 2018-03-01 00:59:48 -08:00
TuxSH
1d621f3bf4 Fix tzram_map_all_segments 2018-03-01 02:36:16 +01:00
TuxSH
78b9698260 Finish writing coldboot_main 2018-03-01 01:40:09 +01:00
TuxSH
19dda5ed48 Can't copy to VAs if VA don't exist (at that point of the program) 2018-03-01 01:13:10 +01:00
TuxSH
e34d86b16f Fix the set_memory_registers_enable_mmu call 2018-03-01 00:05:18 +01:00
TuxSH
3d4dcdde13 Fix ttbl init pointer arith bug, other fixes 2018-02-28 23:35:30 +01:00
TuxSH
0a89831193 Clear bss at runtime like Nintendo actually does 2018-02-28 22:29:17 +01:00
TuxSH
303774aeb7 Use bic instead of and in finalize_powerdown 2018-02-28 20:01:42 +01:00
TuxSH
6be5b0a52f Implement flush_dcache_all_tzram_pa and invalidate_icache_all_inner_shareable_tzram_pa for the crt0s 2018-02-28 19:06:41 +01:00
TuxSH
e5f293e004 Implement and use set_memory_registers_enable_mmu 2018-02-28 13:32:18 +01:00
TuxSH
64c8612342 Fix wrongly named register in __set_memory_registers, add prototype 2018-02-28 07:32:14 +01:00
Michael Scire
c5b0639b8a Implement BootConfig. 2018-02-27 20:28:34 -08:00
Michael Scire
d0b74d7751 Panic Bright Red on failed master key detection. 2018-02-27 20:00:48 -08:00
Michael Scire
694872b4cc Fix decrypt_data_into_keyslot 2018-02-27 19:59:51 -08:00
Michael Scire
0508ee29d8 Clean up SE TODOs, implement GIC nonsecure init 2018-02-27 19:58:56 -08:00
Michael Scire
1463266190 Status callback keys have guaranteed atomicity from caller locks. 2018-02-27 19:50:31 -08:00
Michael Scire
66b3b3a706 Implement Panic() stub. 2018-02-27 19:43:07 -08:00
Michael Scire
fba3d1c2d9 Finish implementing Security Engine context save 2018-02-27 19:05:45 -08:00
Michael Scire
a8a2f8c3f6 Implement more SE context save functionality 2018-02-27 17:40:59 -08:00
TuxSH
93634d08e3 Implement __set_memory_registers 2018-02-28 02:37:08 +01:00
Michael Scire
924d469344 Implement the rest of smcCpuSuspend with skeleton SE API calls. 2018-02-27 17:07:30 -08:00
TuxSH
a90a431d61 Refactor save/restore_current_core_context, fix memory ordering issue with inline asm 2018-02-28 01:59:50 +01:00
Michael Scire
c18af9f3d2 Finish smcCpuOff 2018-02-27 16:35:35 -08:00
Michael Scire
7a9e031bff Uncomment more sleep/suspend code 2018-02-27 16:10:51 -08:00
Michael Scire
235b7b65e1 Uncomment BPMP firmware copy in LP0 2018-02-27 16:01:09 -08:00
Michael Scire
c2c6745f60 Implement save/restore current core context 2018-02-27 15:40:05 -08:00
Michael Scire
9a5bc05259 Fix missing titlekey revision assignment 2018-02-27 15:14:23 -08:00
TuxSH
602507ee8f Rename cache.s/.h to arm.s/.h 2018-02-27 22:29:47 +01:00
TuxSH
5bade9ee1c Use specs file, remove -nostartfiles 2018-02-27 20:14:12 +01:00
TuxSH
0258324872 Use provided __libc_init_array and __libc_fini_array, bugfixes 2018-02-27 16:10:56 +01:00
TuxSH
24b15dad40 Unstub lma2vma code 2018-02-27 13:26:51 +01:00
TuxSH
b0cb819b06 Add proper linkscript...
...adapted from @fincs' own linkscripts
2018-02-27 04:19:38 +01:00
Michael Scire
c4789a5a11 Skeleton smcCpuOff, fix building, fix smcConfigureCarveout 2018-02-26 17:41:31 -08:00
TuxSH
9384546753 Adapt code to match last commit, link in bpmpfw_bin(_size) 2018-02-26 22:30:51 +01:00
TuxSH
984ade3ede
Merge pull request #58 from MerryMage/context_id-rename
Rename set_core_entrypoint_and_context_id
2018-02-26 22:26:46 +01:00
TuxSH
c7d83c6eb6 Rewrite the memory map-related code...
...other style fixes, etc.
2018-02-26 22:09:35 +01:00
MerryMage
3d40051146 Rename set_core_entrypoint_and_context_id 2018-02-26 17:11:49 +00:00
Michael Scire
bda9dcbe73 Start implementing smcCpuSuspend 2018-02-26 02:00:17 -08:00
TuxSH
18d0a81bd5
Merge pull request #51 from lioncash/const
memory_map: Remove unnecessary const
2018-02-26 10:26:58 +01:00
Mat M
1de6b336bb all: Make file-scope variables internally linked where applicable (#57)
Narrows the scope of visible symbols to where they're actually used. Also
makes it easier to see true globals in source files
(ones used from multiple translation units)
2018-02-26 00:42:21 -08:00
Mat M
c94cfe4898 lock: Use stdatomic.h (#56)
Provides the same assembly output while using the standardized interface

e.g.

0000000000000000 <set_priv_smc_in_progress>:
   0:   90000000    adrp    x0, 0 <set_priv_smc_in_progress>
   4:   91000000    add x0, x0, #0x0
   8:   52800022    mov w2, #0x1                    // #1
   c:   d503201f    nop
  10:   085ffc01    ldaxrb  w1, [x0]
  14:   08037c02    stxrb   w3, w2, [x0]
  18:   35ffffc3    cbnz    w3, 10 <set_priv_smc_in_progress+0x10>
  1c:   72001c3f    tst w1, #0xff
  20:   54ffff81    b.ne    10 <set_priv_smc_in_progress+0x10>  // b.any
  24:   d65f03c0    ret
2018-02-25 22:59:48 -08:00
Mat M
461105a501 fuse: simplify checks in fuse_get_reserved_odm and fuse_get_spare_bit (#54)
A separate variable isn't particularly necessary here, and given that the type
is unsigned, we only need to test the upper bound.

This also resolves two -Wtype-limits warnings
2018-02-25 21:23:31 -08:00
Mat M
fff3912c81 mc: Remove dead code in get_carveout_by_id (#52) 2018-02-25 21:13:07 -08:00
Mat M
991d4f1355 se: Remove memset in se_perform_aes_block_operation (#53)
We can just initialize the array to be zeroed out. This is safer and less error-prone,
since the initializer is now associated with the variable directly, making it
impossible to put code relying on the zeroed out state before it (unlike with memset).
2018-02-25 21:12:49 -08:00
Lioncash
b328effd9b
memory_map: Remove unnecessary const
Since the return value isn't a pointer thing doesn't have much use.
2018-02-25 23:56:47 -05:00
TuxSH
969b781a68 Failed attempt to fix loops not being unrolled, other fixes. 2018-02-25 21:41:16 +01:00
TuxSH
b0ea9c1a0b Move source files to src/, add Makefile, fix all build and linkage errors, etc. 2018-02-25 20:00:50 +01:00