Commit Graph

64 Commits

Author SHA1 Message Date
Dr. Chat a2bc0443f2 Quick-kill the MMIO handler if the fault address is above the mapping range. 2015-09-07 21:26:33 -05:00
Ben Vanik 068b2056ca Explode more gracefully on crashes while crashing. 2015-09-06 13:34:39 -07:00
Ben Vanik 3c96b6fa0a DANGER DANGER. Switching to global critical region.
This changes almost all locks held by guest threads to use a single global
critical region. This emulates the behavior on the PPC of disabling
interrupts (by calls like KeRaiseIrqlToDpcLevel or masking interrupts),
and prevents deadlocks from occuring when threads are suspended or
otherwise blocked.
This has performance implications and a pass is needed to ensure the
locking is as granular as possible. It could also break everything
because it's fundamentally unsound. We'll see.
2015-09-06 09:30:54 -07:00
Rhodan81 9427d03d5a Fix crash in memory allocation when there is no space to fit entire page
range
2015-09-05 15:53:05 +02:00
Ben Vanik 5e08889d93 More style cleanup. 2015-08-06 20:17:01 -07:00
sephiroth99 510a8e59cf memory: fix out of bounds access in BaseHeap::AllocRange
Prevent out of bounds access of page_table_ by making sure the requested
page count fits in the requested page range.
2015-07-30 02:27:55 -04:00
Ben Vanik 12a29371e3 Clang fixes. 2015-07-19 18:32:48 -07:00
Ben Vanik 91d7acf59e Fixing some particularly bad /W4. 2015-07-18 23:04:21 -07:00
Ben Vanik 8154d1dad6 Moving xe::Memory and code cache to abstracted APIs. 2015-07-15 22:10:05 -07:00
Ben Vanik 6cf29b969d Abstraction for VirtualAlloc/VirtualFree. 2015-07-15 19:05:08 -07:00
Ben Vanik 58c3a1ba79 VirtualProtect platform abstraction. 2015-07-15 18:20:05 -07:00
Ben Vanik fc7695f874 Take the whole 64k page at 0x0. 2015-06-23 18:06:37 -07:00
Ben Vanik fb1f4906d9 xb format --all (we are now format clean). Buildbot will yell at you. 2015-06-22 22:26:51 -07:00
Drew DeVault a064ba053e Add missing includes for cstring 2015-06-16 23:16:18 -06:00
Ben Vanik 9d7d6df476 Bail on invalid heap lookups. 2015-06-08 17:49:54 -07:00
Ben Vanik 52b8f4b54b Removing memory reservation value check for load/store. 2015-06-07 21:57:44 -07:00
gibbed dae8aa4386 Added --protect_zero command-line argument to protect page zero from read/writes. 2015-06-05 16:13:34 -05:00
Ben Vanik 53527bef17 Fixing heap frees. 2015-06-04 19:18:00 -07:00
Ben Vanik 319402a11a Re-allow writes to 0. No clue why, but everything does it. 2015-06-04 16:37:17 -07:00
Dr. Chat abacf136a0 Protect page 0 with no access 2015-06-04 16:21:38 -05:00
Ben Vanik a9e2ba16fb Optimizing page allocation (still shit) and adding MmSetAddressProtect. 2015-06-03 21:24:09 -07:00
Ben Vanik 40a6a12800 Attempting to inline a lot of MMIO operations. Works for GPU stuff mainly. 2015-06-02 20:15:43 -07:00
Ben Vanik c4ef5d4eb8 Allow AllocFixed of unreserved ranges. 2015-05-29 21:47:19 -07:00
gibbed d1dbee2052 Consistency in memset calls. 2015-05-28 05:28:59 -05:00
Ben Vanik 8244409501 Refactoring to enable future time scaling, coordinated clocks, etc. 2015-05-26 22:20:58 -07:00
Ben Vanik e3ddcd44e7 Minor fixes and fixing thread names. 2015-05-25 21:10:28 -07:00
Ben Vanik 9607eef9d6 Fixing page alloc in range; only happens right before OOM crash though :/ 2015-05-25 10:28:36 -07:00
Ben Vanik f5a2b85d42 Switching to xe::mutex. 2015-05-25 00:52:21 -07:00
Ben Vanik da655d15b3 Sharing memory. 2015-05-25 00:51:23 -07:00
gibbed ea99ba8e3b 0x7F000000-0x7FFFFFFF is magic. 2015-05-22 02:20:05 -05:00
Ben Vanik b119aa50f5 Fixing thread ID. 2015-05-18 21:24:14 -07:00
Ben Vanik 8bfc43bb0d Trying to do MMIO protects on allocation granularity. 2015-05-18 20:47:41 -07:00
Ben Vanik 7796f5cb60 Fixing page guards to work at system page granularity. 2015-05-18 20:25:15 -07:00
Ben Vanik 6d821df3a9 Zeroing heap memory. 2015-05-18 18:48:48 -07:00
Ben Vanik f5f7d15366 Trying, and failing, to get E0000000 range addresses to work. 2015-05-17 21:26:44 -07:00
Ben Vanik c1a0f46ea8 Implementing dcbz. 2015-05-17 16:40:38 -07:00
Ben Vanik 37804d692c Fixing stack allocation alignment. 2015-05-17 10:17:32 -07:00
Dr. Chat 6adde32558 Scribble memory when allocated 2015-05-16 18:41:18 -05:00
Ben Vanik 147a70b9c1 Rewriting memory manager. 2015-05-17 00:16:56 +01:00
Ben Vanik 4c8f3501ad Removing xdb and old tracing code before rewrite. 2015-05-03 22:01:31 -07:00
Ben Vanik d1ee1512b9 Fixing most clang-format errors. 2015-05-03 10:27:50 -07:00
Ben Vanik e3220f7ae6 Code cleanup: moving poly/ into xenia/base/ 2015-05-02 03:42:51 -07:00
Ben Vanik 30f7effa73 Code cleanup: removing common.h 2015-05-02 01:25:59 -07:00
Ben Vanik ec84a688e9 Starting to properly attribute virtual vs. physical memory accesses. 2015-03-29 11:11:35 -07:00
Ben Vanik 3a197705bb Special memory functions for system allocs. 2015-03-28 15:54:44 -07:00
Ben Vanik 281abea955 Converting addresses in xe::cpu to 32bit. 2015-03-24 19:41:29 -07:00
Ben Vanik 9281d62106 Moving cpu/runtime/ to cpu/. 2015-03-24 08:25:58 -07:00
Ben Vanik 29912f44c0 Moving alloy/ into xenia/cpu/ to start simplifying things. 2015-03-24 07:46:18 -07:00
Ben Vanik 59adde4d7f Negative size allocs. Probably. 2015-02-01 21:20:55 -08:00
Ben Vanik 00e4a4fe1b Fix #include format. 2015-01-31 22:49:47 -08:00