TuxSH
3e8bd764d5
thermosphere: unfuck sw breakpoint logic
2021-02-19 21:51:51 +00:00
TuxSH
c64ccd86ee
thermosphere: uninline recursive lock funcs
2021-02-19 21:51:50 +00:00
TuxSH
217c1ad054
thermosphere: implement reading and writing guest memory
2021-02-19 21:51:50 +00:00
TuxSH
0f0228e240
thermosphere: we expose a GICv2, not a GICv1
2021-02-19 21:51:49 +00:00
TuxSH
3ca3e094fe
thermosphere: use ish instead of sy in most places
2021-02-19 21:51:49 +00:00
TuxSH
d1cd17a9df
thermosphere: fix fmt.c "l" handling
2021-02-19 21:51:49 +00:00
TuxSH
626f0ecb98
thermosphere: major refactor of memory map
...
- use recursive stage 1 page table (thanks @fincs for this idea)
- NULL now unmapped
- no identity mapping
- image + GICv2 now mapped at the same address for every platform
- tempbss mapped just after "real" bss, can now steal unused mem from
the latter
- no hardcoded VAs for other MMIO devices
- tegra: remove timers, use the generic timer instead
2021-02-19 21:51:48 +00:00
TuxSH
92a291cd41
thermosphere: disable interrupts in debugPauseCores
2021-02-19 21:51:48 +00:00
TuxSH
906d6a4f20
thermosphere: rewrite debug pause & fix single step state machine
2021-02-19 21:51:48 +00:00
TuxSH
6b8a843ffb
thermosphere: trap set/way dcache access
...
note: qemu does not implement the trap
2021-02-19 21:51:47 +00:00
TuxSH
72d1992eec
thermosphere: use barriers and caches *properly*. Cache code refactoring
...
- set/way cache ops create losses of coherency, do not broadcast and are only meant to be used on boot, period.
Cache ops by VA are **the only way** to do data cache maintenance.
Fix a bug where the L2 cache was evicted by each core. It shouldn't have.
- Cleaning dcache to PoU and invalidating icache to PoU, by VA is sufficient for self-modifying code
- Since we operate within a single cluster and don't do DMA, we almost always operate within the inner shareability domain
(commit untested on real hw)
2021-02-19 21:51:47 +00:00
TuxSH
1369697058
thermosphere: add debug pause logic
2021-02-19 21:51:47 +00:00
TuxSH
b6a130547a
thermosphere: add common asm macros
2021-02-19 21:51:46 +00:00
TuxSH
067770334e
thermosphere: add fpu regs save/restore
2021-02-19 21:51:46 +00:00
TuxSH
a7741c8576
thermosphere: add cctx->userFrame
2021-02-19 21:51:46 +00:00
TuxSH
dd96c8b32b
thermosphere: fix ptimer time freezing (again)
2021-02-19 21:51:45 +00:00
TuxSH
68a1ce6dd2
thermosphere: properly implement guest timer stuff
2021-02-19 21:51:45 +00:00
TuxSH
388c245ce4
thermosphere: add TransportInterface abstraction layer
2021-02-19 21:51:45 +00:00
TuxSH
1086c0612c
thermosphere: refactor tegra uart code, etc.
2021-02-19 21:51:44 +00:00
TuxSH
8dc9be9f8e
thermosphere: pl011 uart refactor
2021-02-19 21:51:44 +00:00
TuxSH
018260645a
thermosphere: fix pl101 uart reg definitions
2021-02-19 21:51:44 +00:00
TuxSH
a6d191bf4b
thermosphere: add proper memory/instruction barriers for breakpoint stuff
2021-02-19 21:51:43 +00:00
TuxSH
1eb60a2a52
thermosphere: add hypervisor timer code
2021-02-19 21:51:43 +00:00
TuxSH
501472324f
thermosphere: refactor exception handlers & add stolen time/emulated ptimer logic
2021-02-19 21:51:42 +00:00
TuxSH
b9d07fccd6
thermosphere: rewrite sysreg trapping code, add skeleton code for timer val trap handling; support A32 EL1 once again
2021-02-19 21:51:42 +00:00
TuxSH
d42d9e60b9
thermosphere: don't trap memory register writes/don't migrate sw breakpoints
...
Makes no sense on a system with ASLR
2021-02-19 21:51:41 +00:00
TuxSH
28552da099
thermosphere: vgic: largely reduce the number of mmio accesses
...
since we have to use 64 bits for VirqState anyway
2021-02-19 21:51:41 +00:00
TuxSH
d56185e432
thermosphere: make the pending virq list ordering stable
2021-02-19 21:51:41 +00:00
TuxSH
c42aef6ba7
thermosphere: fix wrong icfgr shift; fix list handling bug
2021-02-19 21:51:40 +00:00
TuxSH
03fe744bc4
thermosphere: vgic: fix OOB accesses, fix icfgr and itargetsr handling
...
qemu actually allows SPIs to use the N-N model
2021-02-19 21:51:40 +00:00
TuxSH
e49a035455
thermosphere: fix is/ic registers usage; fix offset calculation
2021-02-19 21:51:40 +00:00
TuxSH
0811572889
thermosphere: fix truncation in vgicCleanupPendingList
2021-02-19 21:51:39 +00:00
TuxSH
76a5e745e4
thermosphere: honor irq config for ppis
2021-02-19 21:51:39 +00:00
TuxSH
7130b6efd1
thermosphere: yikes
2021-02-19 21:51:39 +00:00
TuxSH
37b14bc4b8
thermosphere: use strict volatile bitfields just in case
2021-02-19 21:51:38 +00:00
TuxSH
13174e7458
thermosphere: vgic: fix critical bug in vgicUpdateState, add more checks
...
Yikes.
2021-02-19 21:51:38 +00:00
TuxSH
ef79908594
thermosphere: add CFI where needed, add PANIC macro, etc.
2021-02-19 21:51:38 +00:00
TuxSH
3a13ab2e46
thermosphere: vgic: mostly fix vSGI handling, remove unimplementable/unused stuff + bugfixes
...
Still somewhat broken, though
2021-02-19 21:51:37 +00:00
TuxSH
676a895cca
thermosphere: fix guest access to irq 25, etc; we don't need to raise VI manually
...
See Armv8a TRM "Virtual IRQ exception"
2021-02-19 21:51:37 +00:00
TuxSH
cdf3bc6942
thermosphere: add PPI definitions
2021-02-19 21:51:37 +00:00
TuxSH
fe0662a75d
vgic: fix multiple bugs
2021-02-19 21:51:36 +00:00
TuxSH
f3ad62d1b8
thermosphere: fix various vgic bugs; fix register access OOB bug (xzr)
2021-02-19 21:51:36 +00:00
TuxSH
27859a7541
thermosphere: vgic: fix enabled state of virqs
2021-02-19 21:51:36 +00:00
TuxSH
e3b6d64f1b
thermosphere: fix multiple bugs
2021-02-19 21:51:35 +00:00
TuxSH
c17b81aaf6
thermosphere: vgic code draft
2021-02-19 21:51:35 +00:00
TuxSH
176be2386d
thermosphere: also trap GICH (to deny access)
2021-02-19 21:51:35 +00:00
TuxSH
f9ec21e99e
thermosphere: handle stage2 data aborts, trap gicd accesses
2021-02-19 21:51:34 +00:00
TuxSH
1775d59977
thermosphere: implement stop point broadcast
2021-02-19 21:51:34 +00:00
TuxSH
b2c5ef2611
thermopshere: add "execute function" sgi
2021-02-19 21:51:34 +00:00
TuxSH
0b69407f8e
thermosphere: barrier & active core mask
2021-02-19 21:51:33 +00:00
TuxSH
0a9a8c2f15
thermosphere: handle physical IRQs
2021-02-19 21:51:33 +00:00
TuxSH
271d2a0ddb
thermosphere: add gicv2 register definitions
2021-02-19 21:51:33 +00:00
TuxSH
6289d2e398
thermosphere: sw breakpoint code, etc.
2021-02-19 21:51:32 +00:00
TuxSH
f8266775f6
thermosphere: remove breakpoint/watchpoint reg dump functions
2021-02-19 21:51:32 +00:00
TuxSH
83c6e2f0e7
thermosphere: add watchpoint + watchpoint merging code
2021-02-19 21:51:31 +00:00
TuxSH
9bc0ed2f70
thermosphere: refactor crt0 + watchpoint init
2021-02-19 21:51:31 +00:00
TuxSH
dc3f87a715
thermosphere: add actual breakpoint code
2021-02-19 21:51:31 +00:00
TuxSH
3649b94b5d
thermosphere: add breakpoint/watchpoint enable/reset code
2021-02-19 21:51:30 +00:00
TuxSH
a3da478089
thermopshere: refactor & fix single-stepping code
2021-02-19 21:51:30 +00:00
TuxSH
ff9714d4f6
thermopshere: refactor jump-to-kernel ,add single-step code
...
not working under qemu yet though
2021-02-19 21:51:30 +00:00
TuxSH
cc232ef4f8
thermosphere: add spinlock code
2021-02-19 21:51:29 +00:00
TuxSH
b742b861ab
thermometer: yeet most a32 support code 👌
2021-02-19 21:51:29 +00:00
TuxSH
eb27c36709
thermosphere: impl stage2 translation
2021-02-19 21:51:29 +00:00
TuxSH
e0339049b3
thermosphere: rework linkscrips, use discardable sections, better sp pivot on crash
2021-02-19 21:51:28 +00:00
TuxSH
e6c5eb3928
thermosphere: add shadow page table hooks
...
note: HCR.TVM not supported by qemu yet
2021-02-19 21:51:28 +00:00
TuxSH
045f556f80
thermosphere: enable EL2 stage1 translation (doesn't take much space)
...
Identity map using 1GB L1 blocks
2021-02-19 21:51:27 +00:00
TuxSH
a11b0b6e0e
thermosphere: fix x18 init, etc.
2021-02-19 21:51:27 +00:00
TuxSH
3fa9133814
thermosphere: add semihosting support & load a kernel using it when needed
...
basically host i/o
2021-02-19 21:51:27 +00:00
TuxSH
ecb4857cbb
thermosphere: seriaLog => debugLog, add DEBUG macro
2021-02-19 21:51:26 +00:00
TuxSH
6d33ebceef
thermosphere: cpu_on hook & skeleton for other PSCI functions
2021-02-19 21:51:26 +00:00
TuxSH
4a5d05f32b
thermosphere: add smc trap handler
2021-02-19 21:51:26 +00:00
TuxSH
b686af2008
thermosphere: use adrp
2021-02-19 21:51:25 +00:00
TuxSH
a291bddcc1
thermosphere: enable traps, works around qemu brk bug
2021-02-19 21:51:25 +00:00
TuxSH
ad6db14526
thermosphere: Fix wrong register allocation
2021-02-19 21:51:25 +00:00
TuxSH
61b6f06766
thermosphere: unfuck qemu JIT, fix exc. handling bug, add cache funcs
2021-02-19 21:51:24 +00:00
TuxSH
16cfa1305d
thermosphere: use x18 but qemu shits the bed
2021-02-19 21:51:24 +00:00
TuxSH
af8e0f2519
thermosphere: add core_ctx.c/h
2021-02-19 21:51:24 +00:00
TuxSH
a560de8465
fml coke spilled all over this laptop's keyboard
2021-02-19 21:51:23 +00:00
TuxSH
3009438e54
thermosphere: sysreg stuff, continued
2021-02-19 21:51:23 +00:00
TuxSH
9af9408feb
thermosphere: add remaining sysreg passthrough stuff
2021-02-19 21:51:23 +00:00
TuxSH
68469ea862
thermosphere: more sysreg code
2021-02-19 21:51:22 +00:00
TuxSH
ffa216c8c7
thermosphere: add some basic sysreg trapping code
2021-02-19 21:51:22 +00:00
TuxSH
1db0502b35
thermosphere: proper uart_reset impl for uart-b
2021-02-19 21:51:22 +00:00
TuxSH
6665245640
thermosphere: fix uart fifo init/flushing
2021-02-19 21:51:21 +00:00
TuxSH
9d6089dc86
thermosphere: rebase, fix some bugs
...
uart now works except for fifo flush
2021-02-19 21:51:21 +00:00
TuxSH
70a9caa7e9
thermosphere: add more sysreg stuff & start writing trap stuff
2021-02-19 21:51:21 +00:00
TuxSH
4952b3c9bf
thermosphere: add sysreg list
2021-02-19 21:51:20 +00:00
TuxSH
bcc72896fd
thermosphere: add hypercall support... even if unused
2021-02-19 21:51:20 +00:00
TuxSH
b5c6b06dad
thermosphere: add ExceptionSyndromeRegister definition
2021-02-19 21:51:20 +00:00
TuxSH
4e0eef2784
thermosphere: start exception handling
2021-02-19 21:51:19 +00:00
TuxSH
ada6b180cc
thermosphere: add qemu support
2021-02-19 21:51:19 +00:00
TuxSH
e6adccce6e
thermosphere: uart fixes/ still not working
2021-02-19 21:51:19 +00:00
TuxSH
f6e1cff5f8
thermosphere: rebase, doesn't work
2021-02-19 21:51:18 +00:00
TuxSH
88382f4fc3
thermosphere: uart refactor, now it doesn't work at all
2021-02-19 21:51:18 +00:00
TuxSH
66b047255b
thermosphere: set correct gpio config for uart (thanks @hexkyz)
2021-02-19 21:51:18 +00:00
TuxSH
076c988796
thermosphere: attempt to output to uart-c
2021-02-19 21:51:17 +00:00
TuxSH
4e6108839d
thermosphere: fix bugs:
...
- missing barriers after setting elr/spsr
- .text.start* matching .text.startup (which contains main, thanks @fincs)
2021-02-19 21:51:17 +00:00
TuxSH
1d58ba8d52
thermosphere: attempt to run
2021-02-19 21:51:17 +00:00
TuxSH
bd9152215f
thermosphere: "write" placeholder code
2021-02-19 21:51:16 +00:00
TuxSH
1f7a1f71d6
thermosphere: remove legacy code
2021-02-19 21:51:16 +00:00
SciresM
3a1ccdd919
Switch atmosphere's build target to C++20. ( #952 )
...
* ams: update to build with gcc10/c++20
* remove mno-outline-atomics
* ams: take care of most TODO C++20s
* fusee/sept: update for gcc10
* whoosh, your code now uses pre-compiled headers
* make: dependency fixes
2020-05-11 15:02:10 -07:00
Michael Scire
6ecf04c3b7
find -exec sed -i'' -e 's/2018-2019 Atmo/2018-2020 Atmo/g' {} +
2020-01-24 02:10:40 -08:00
hexkyz
d09be18359
Fix argument type for isalnum and toupper
2019-07-02 17:22:28 +01:00
hexkyz
09ab3efddd
Fix argument type for isspace
2019-07-01 20:29:43 +01:00
hexkyz
e561919a52
Fix logic in ldr_ro_manager
...
Fix argument type for isdigit/isxdigit
2019-06-30 18:48:16 +01:00
2g4y1
3cb60b324b
More 2019 Copyrights ( #503 )
2019-04-08 12:47:01 +02:00
Michael Scire
03e176d7f1
atmosphere: current year is 2019
2019-04-07 19:00:49 -07:00
Pika
c7730d31ff
fix thermo typo
2018-09-29 18:48:06 -04:00
hexkyz
28e4d4411d
Add and fix copyright notices for better GPL compliance (thanks @naehrwert and @CTCaer).
2018-09-07 16:00:13 +01:00
TuxSH
8bf4cd1908
Fix string truncation warning in thermosphere
2018-05-15 01:25:12 +02:00
Kate J. Temkin
d104ff61ca
thermosphere: add in basic hypervisor skeleton
2018-04-20 04:10:44 -06:00