aboutsummaryrefslogtreecommitdiff
path: root/examples/system
diff options
context:
space:
mode:
authorspicyjpeg <thatspicyjpeg@gmail.com>2022-10-13 23:21:32 +0200
committerspicyjpeg <thatspicyjpeg@gmail.com>2022-10-13 23:21:32 +0200
commitb458ea70700739bf8a64217af369c7ace08fc954 (patch)
tree77281ebd18e5049fcb1c86718854ff3ce91e54c2 /examples/system
parent8e92156bc6a977651771d2cf91ac5800a0e9a913 (diff)
downloadpsn00bsdk-b458ea70700739bf8a64217af369c7ace08fc954.tar.gz
Fix dropped IRQs, clean up psxcd and psxetc logging
Diffstat (limited to 'examples/system')
-rw-r--r--examples/system/childexec/CMakeLists.txt18
-rw-r--r--examples/system/childexec/child/child.c8
-rw-r--r--examples/system/childexec/parent.c27
3 files changed, 22 insertions, 31 deletions
diff --git a/examples/system/childexec/CMakeLists.txt b/examples/system/childexec/CMakeLists.txt
index 0c25ca4..e542d2a 100644
--- a/examples/system/childexec/CMakeLists.txt
+++ b/examples/system/childexec/CMakeLists.txt
@@ -13,14 +13,14 @@ project(
file(GLOB _sources *.c)
file(GLOB _child_sources child/*.c)
-psn00bsdk_add_executable(parent GPREL ${_sources})
-psn00bsdk_add_executable(child GPREL ${_child_sources})
-#psn00bsdk_add_cd_image(childexec_iso childexec iso.xml DEPENDS parent)
+psn00bsdk_add_executable(childexec GPREL ${_sources})
+psn00bsdk_add_executable(childexec_child GPREL ${_child_sources})
+#psn00bsdk_add_cd_image(childexec_iso childexec iso.xml DEPENDS childexec)
-psn00bsdk_target_incbin(parent PRIVATE ball16c ball16c.tim)
+psn00bsdk_target_incbin(childexec PRIVATE ball16c ball16c.tim)
psn00bsdk_target_incbin(
- parent PRIVATE child_exe
- ${PROJECT_BINARY_DIR}/child.exe
+ childexec PRIVATE child_exe
+ ${PROJECT_BINARY_DIR}/childexec_child.exe
)
# Relocate the child executable to a non-default address to prevent it from
@@ -28,9 +28,9 @@ psn00bsdk_target_incbin(
# NOTE: child executables are not position-independent and can't be relocated
# at runtime. If you need your code to be relocatable (e.g. to load it into a
# dynamically-allocated buffer), consider using a DLL instead.
-target_link_options(child PRIVATE -Ttext=0x80030000)
+target_link_options(childexec_child PRIVATE -Ttext=0x80030000)
# Make sure the child executable is built before the parent.
-add_dependencies(parent child)
+add_dependencies(childexec childexec_child)
-install(FILES ${PROJECT_BINARY_DIR}/parent.exe TYPE BIN)
+install(FILES ${PROJECT_BINARY_DIR}/childexec.exe TYPE BIN)
diff --git a/examples/system/childexec/child/child.c b/examples/system/childexec/child/child.c
index bd17440..dcfbfaf 100644
--- a/examples/system/childexec/child/child.c
+++ b/examples/system/childexec/child/child.c
@@ -98,8 +98,8 @@ MATRIX light_mtx = {
char pad_buff[2][34];
/* Function declarations */
-void init();
-void display();
+void init(void);
+void display(void);
/* Main function */
@@ -245,7 +245,7 @@ int main(int argc, const char *argv[]) {
}
-void init() {
+void init(void) {
/* Reset the GPU, also installs a VSync event handler */
ResetGraph( 0 );
@@ -300,7 +300,7 @@ void init() {
}
-void display() {
+void display(void) {
/* Wait for GPU to finish drawing and vertical retrace */
DrawSync( 0 );
diff --git a/examples/system/childexec/parent.c b/examples/system/childexec/parent.c
index 3e7d218..83d964c 100644
--- a/examples/system/childexec/parent.c
+++ b/examples/system/childexec/parent.c
@@ -67,12 +67,12 @@ extern const uint32_t ball16c[];
TIM_IMAGE tim;
-void run_child();
+void run_child(void);
char pad_buff[2][34];
-void init() {
+void init(void) {
int i;
@@ -270,10 +270,7 @@ typedef struct {
// Child program address
extern char child_exe[];
-// Manually defined as its not defined in psxapi by default
-void SetDefaultExitFromException();
-
-void run_child() {
+void run_child(void) {
// Arguments for the child program
char *args[] =
@@ -289,29 +286,23 @@ void run_child() {
// Copy child executable to its intended adddress
memcpy((void*)exe->param.t_addr, child_exe+2048, exe->param.t_size);
- // Enter critical section to prepare for program execution
- EnterCriticalSection();
+ // Prepare for program execution and disable interrupts
+ //EnterCriticalSection();
+ StopCallback();
// Stop pads, enable auto acknowledge
StopPAD();
ChangeClearPAD(1);
ChangeClearRCnt(3, 1);
-
- // Set default exception handler just in case
- //SetDefaultExitFromException();
-
- // Last three function calls could be relegated to
- // a StopCallback() function in the future.
-
+
// Execute child
printf("Child exec!\n");
Exec(&exe->param, 3, args);
// Restore interrupts for this PS-EXE
- EnterCriticalSection();
RestartCallback();
- ExitCriticalSection();
-
+ //ExitCriticalSection();
+
// Re-init and re-enable pads
InitPAD(pad_buff[0], 34, pad_buff[1], 34);
StartPAD();