Commit graph

156 commits

Author SHA1 Message Date
TuxSH b0079e404d Clear pk2ldr in coldboot_main 2018-02-25 03:54:28 +01:00
TuxSH a00e68e94a Write a significant chunk of coldboot init...
...merge start.cold.s and start.warm.s, other changes, etc.
2018-02-25 03:34:15 +01:00
TuxSH be67169390
Merge pull request #50 from lioncash/error
memory_map: Fix most compilation issues
2018-02-25 00:14:50 +01:00
Mat M a081c93094 bootconfig/configitem: Fix includes and identifiers (#49) 2018-02-24 12:46:57 -08:00
Lioncash a34813bcf4
memory_map: Fix most compilation issues 2018-02-24 15:38:48 -05:00
Mike H f6008d947d
More previously unknown fuses 2018-02-24 18:48:11 +00:00
Mike H 3929ba77e6
Adding FUSE_RESERVED_SW 2018-02-24 18:34:49 +00:00
hexkyz e2d45878c3 Preliminary Exosphere FUSE driver 2018-02-24 18:15:47 +00:00
TuxSH cc4f6f7f84 Introduce memory_map.h 2018-02-24 17:22:55 +01:00
Michael Scire ed5850ebbf Implement se_trigger_interrupt, fix up some configitems 2018-02-24 07:25:38 -08:00
Michael Scire e8b1e0b965 Implement exception vectors. 2018-02-24 07:06:29 -08:00
Michael Scire 422cd14aac Implement driver for the GIC-400. 2018-02-24 05:33:16 -08:00
Michael Scire c94fe287cb Exosphere I2C Driver. 2018-02-24 04:27:34 -08:00
Michael Scire 672d76cb31 Fix I2C success mask 2018-02-24 04:27:34 -08:00
Mat M 56f5b56235 smc_user: Correct cache_flush to flush_dcache_range (#48)
cache_flush is a non-existent function
2018-02-23 20:38:21 -08:00
Mat M 44a2b7a344 smc_user: Add missing gcm.h include (#47)
Resolves an implicit declaration warning for gcm_decrypt_key
2018-02-23 16:09:55 -08:00
Mat M e3897bb731 se: Add missing string.h include (#46)
Resolves implicit declaration warnings for memcpy and memset
2018-02-23 16:09:44 -08:00
Mat M 34d8a859ab timers: Fix identifier name in wait's spin-lock (#45)
Also resolves implicit definition warnings for wait by including the necessary header where applicable
2018-02-23 16:09:34 -08:00
Michael Scire dbf2eb7ed1 Clean up BPMPFW I2C prototypes.
Prototypes for internal functions shouldn't be in shared headers.
2018-02-23 12:07:02 -08:00
TuxSH 0a0a1b088d
Merge pull request #43 from lioncash/prototype
i2c: Fix -Wmissing-prototypes warnings
2018-02-23 19:18:46 +01:00
Lioncash b4229f0fa8
mmu: Remove phys_addr parameter from mmu_unmap_range
It's unused
2018-02-23 09:25:21 -05:00
Lioncash 296b43744c
i2c: Fix -Wmissing-prototypes warnings 2018-02-23 09:19:32 -05:00
TuxSH 8e4a5bf32b
Merge pull request #17 from lioncash/include
Add missing string.h includes
2018-02-23 14:51:27 +01:00
TuxSH dd3498a356
Merge pull request #27 from lioncash/param
mmu: Fix compilation issues
2018-02-23 14:50:54 +01:00
Mat M 9dfa6e2732 start.cold/warm: Correct MSR instructions (#42)
The second operand needs to be an immediate
2018-02-23 05:46:06 -08:00
Mat M 7b1fa3a8f0 start.cold/warm.s: Correct DSB instruction instances (#41)
DSB requires that the barrier option be specified
2018-02-23 05:42:55 -08:00
Merry 85df3dcb7e mc: fix invalid range comparison (#37) 2018-02-23 05:42:47 -08:00
Mat M 615216edeb smc_api: Fix compilation issues (#40)
* smc_api: Add missing includes

MASTERKEY_REVISION_400_CURRENT, seal_titlekey, PMC_BASE and the randomcache functions  aren't visible without them

* smc_api: Add missing parameter name to smc_get_result

* smc_api: Fix buffer being passed to se_get_exp_mod_output in smc_unwrap_rsa_oaep_wrapped_titlekey_get_result

wrapped_titlekey doesn't exist

* smc_api: Correct device physical address accesses in smc_read_write_register
2018-02-23 05:41:26 -08:00
Merry e29123cac3 randomcache: Typo in randomcache_refill (#38)
g_random_cache_low > high_plus_one didn't update g_random_cache_high.
2018-02-23 05:40:47 -08:00
Mat M 0ec1ceca1f sealedkeys: Fix compilation issues (#39)
* sealedkeys: Remove non-existent variable in condition in seal_titlekey

* sealedkeys: call unseal_key_internal in unseal_key instead of seal_key_internal
2018-02-23 05:40:38 -08:00
TuxSH 91d1b047c4 Fix bpmpfw/Makefile, other changes. 2018-02-23 13:56:23 +01:00
Lioncash 705802d749
mmu: Fix call to non-existent mmu_unmap_page_range function in mmio_unmap_all_devices 2018-02-23 07:32:23 -05:00
Lioncash d2f12c5900
mmu: Remove extraneous argument to mmu_unmap in mmu_unmap_range 2018-02-23 07:30:48 -05:00
Michael Scire 90f792b1cc Remove Makefile copy/paste leftovers for bpmpfw 2018-02-23 04:15:14 -08:00
Michael Scire 5370c7b150 Implement LP0-Entry BPMP Firmware 2018-02-23 04:13:18 -08:00
Michael Scire f7598cb433 Implement smcConfigureCarveout 2018-02-23 01:12:38 -08:00
Michael Scire b2dc858738 Implement smcReadWriteRegister 2018-02-23 00:20:51 -08:00
Mat M 765ae2c06a se: Fix compilation issues (#36)
* se: Correct excess argument errors with se_perform_aes_block_operation

* se: Fix excess arguments with set_se_ctr

* se: Correct variable identifiers in se_synchronous_exp_mod

* se: Correct offset variable identifier in se_get_exp_mod_output
2018-02-22 23:12:44 -08:00
Mat M 3596032869 package2: Silence a -Wcomment warning (#35) 2018-02-22 23:11:51 -08:00
Mat M 7ab0acf656 package2: Correct -> to . in load_package2 (#34)
header is a local on the stack, so this should just be regular member accessing
2018-02-22 23:11:15 -08:00
Mat M 06c8b7a764 package2: Fix buffer variable name in rsa2048_pss_verify (#32) 2018-02-22 20:40:41 -08:00
Mat M 4131a61d00 package2: Use assignment instead of memcpy in decrypt_and_validate_header (#33)
This is more concise and also compiles (the previous code was missing an & on the source argument)
2018-02-22 20:31:13 -08:00
Mat M 7d777a0e59 package2: Fix loop index in decrypt_and_validate_header (#31) 2018-02-22 20:18:18 -08:00
Mat M 83216409d2 all: Use bool where applicable (#30) 2018-02-22 19:58:39 -08:00
Mat M 1d8f443f68 gcm: Convert source data to a uint8_t pointer before subscripting it (#29)
It's not well-formed to subscript a pointer to void
2018-02-22 18:44:27 -08:00
Mat M 3020faf8a2 mmu: Pass missing tbl argument to mmu_map_page in mmu_map_page_range (#28) 2018-02-22 18:28:30 -08:00
Lioncash 6fb3c77764
Add missing string.h includes 2018-02-22 21:09:02 -05:00
Mat M a798df5a2c cpu_context: Add missing include (#25) 2018-02-22 18:08:57 -08:00
Mat M c6158d7d64 mmu: Fix loop index variable name in mmio_get_device_address (#24) 2018-02-22 18:05:43 -08:00
Mat M 0597fe887a package2: Correct variable name for new device key source (#19)
Identifiers can't begin with a number
2018-02-22 18:03:22 -08:00
Merry a6c91ffe4e se: fix infinite loop in shift_left_xor_rb (#21) 2018-02-22 18:03:05 -08:00
Merry 220e574ff7 mmu: Correct TCR_ORGN_WBWA typo 2018-02-22 18:02:45 -08:00
Michael Scire a007e98e17 Fix SE access typo 2018-02-22 17:58:48 -08:00
Michael Scire d1d8d3da34 Switch all MMIO to the new access style 2018-02-22 17:50:37 -08:00
Merry 5d97ac48f2 userpage: fix declarations (#20) 2018-02-22 17:20:03 -08:00
Mat M 25a5eacb96 masterkey: Add missing semicolon to mkey_vectors (#18) 2018-02-22 17:18:28 -08:00
Michael Scire 215ae12b50 Access NX_BOOTLOADER_MAILBOXEN via mmu defs 2018-02-22 17:08:54 -08:00
Michael Scire 72da8dcf5a Finish SE API operations other than context-saving. 2018-02-22 17:05:36 -08:00
TuxSH 5e1c137e26 Add mmio handling to mmu.h 2018-02-23 01:45:26 +01:00
Michael Scire 0ef8f1db2e Implement SE secure AES API. 2018-02-22 16:17:12 -08:00
Michael Scire ead0e2ba86 Implement RSA2048-PSS validation. 2018-02-22 15:19:29 -08:00
Mat M 32238984bf smc_user: Fix syntax (#16)
* smc_user: Fix syntax for size assignment in user_load_secure_exp_mod_key() and user_load_rsa_oaep_key()

* smc_user: Fix include directive
2018-02-22 14:18:34 -08:00
MerryMage a290932034 uart: transmit string and hex 2018-02-22 19:27:22 +00:00
MerryMage 71b76c153d Add uart 2018-02-22 19:27:01 +00:00
Michael Scire b00df2032d Clarify package2 relocation comment 2018-02-21 13:48:36 -08:00
Michael Scire d0e28890b0 Finish actual Package2 loading code. 2018-02-21 13:38:55 -08:00
Michael Scire 896d167b64 Add more WIP Package2 loading code. 2018-02-21 11:52:39 -08:00
Michael Scire 904ed3ad4e Fix mangled register name. 2018-02-21 10:58:50 -08:00
Michael Scire f0d0ec0dca Push WIP NX_BOOTLOADER sync code (for coldboots) 2018-02-21 10:57:51 -08:00
Michael Scire 330f8a0f8b Fix SMC names. 2018-02-20 18:48:09 -08:00
TuxSH 663c446439 Mention that Nintendo copy-pasted some startup code from arm-trusted-firmware 2018-02-21 00:53:23 +01:00
TuxSH 5681622f65 Add mmu table builder functions (mmu.h) 2018-02-20 23:44:10 +01:00
Michael Scire 9baab1aebc Clarify PASLR commentary 2018-02-20 13:51:17 -08:00
Michael Scire d3d65f4800 smcGenerateSpecificAesKey, smcLoadRsaPrivateKey, smcLoadRsaOaepKey 2018-02-20 13:25:57 -08:00
Michael Scire 3d80b4edbc smcDecryptRsaPrivateKey 2018-02-20 12:56:41 -08:00
TuxSH 81b874cc14 Fix minor build issues in gcm.c, etc. 2018-02-20 19:29:44 +01:00
Michael Scire 25e6317272 Fix GHASH comment. 2018-02-20 09:41:16 -08:00
Michael Scire 77c93221e9 Implement Nintendo's non-standard AES-GCM. 2018-02-20 09:39:50 -08:00
Michael Scire cec055a44b smcGetRandomFor{User,Priv} Implementations. 2018-02-20 03:19:35 -08:00
Michael Scire 34667a65f9 Implement titlekey unwrapping. 2018-02-20 01:49:10 -08:00
Michael Scire cbdd130917 Fix Seal Key sources. 2018-02-20 01:03:53 -08:00
Michael Scire 4030c6eb20 smcGenerateAesKek + Key sealing. 2018-02-20 01:02:01 -08:00
Michael Scire 07f9e9500e Implement masterkey logic, KEYSLOT defines. 2018-02-19 23:41:27 -08:00
Michael Scire 61f8886879 Implement titlekey SMCs (with skeleton tkey API) 2018-02-19 21:47:11 -08:00
Michael Scire 59281c5a97 Implement smcRsaOaep 2018-02-19 21:09:53 -08:00
Michael Scire f1c521a5d6 Implement smcExpMod. 2018-02-19 20:56:12 -08:00
Michael Scire 9b54bc536b Add missing userToSecure args in smcComputeCmac 2018-02-19 20:31:04 -08:00
Michael Scire 0340085c67 smcComputeCmac implementation. 2018-02-19 20:28:37 -08:00
Michael Scire ff07451280 Outline user<->secure page copying. 2018-02-19 20:18:53 -08:00
TuxSH a01d2c92b2 Add the crt0s 2018-02-20 01:27:15 +01:00
Michael Scire d0beae376f SMCCryptAes + Skeleton blocking AES API 2018-02-19 13:27:18 -08:00
Michael Scire 21c2405f15 Async SE AES API 2018-02-19 13:00:12 -08:00
Michael Scire 83fd2c43a3 Flesh out more of the SE driver 2018-02-19 01:27:50 -08:00
Michael Scire f77cae48d0 Skeleton for smcGetConfig and smcSetConfig 2018-02-19 00:41:19 -08:00
TuxSH f629a629d1 Change argument types in se.c/h, implement read32le/be, etc. 2018-02-19 00:02:37 +01:00
TuxSH 9c588d4965 ic iallu doesn't broadcast at all, replace the "icache invalidate all" function 2018-02-18 23:45:44 +01:00
TuxSH 0cc2cf0dc0 Add cache+tlb functions 2018-02-18 23:11:11 +01:00
Michael Scire a800c3c2e7 Add some more MMIO, smcCpuOn 2018-02-17 18:50:39 -08:00
Michael Scire 5c24f58402 Example SMC implementation (load_aes_key) 2018-02-17 16:34:31 -08:00
Michael Scire 49e1e6f41e Add wrapper for async SMCs 2018-02-17 16:00:53 -08:00