aboutsummaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/sandbox/Kconfig18
-rw-r--r--arch/x86/cpu/i386/setjmp.S5
-rw-r--r--arch/x86/include/asm/setjmp.h6
3 files changed, 12 insertions, 17 deletions
diff --git a/arch/sandbox/Kconfig b/arch/sandbox/Kconfig
index 852a7c8bf2..35508c6b29 100644
--- a/arch/sandbox/Kconfig
+++ b/arch/sandbox/Kconfig
@@ -13,7 +13,7 @@ config SYS_CPU
config SANDBOX64
bool "Use 64-bit addresses"
select PHYS_64BIT
- select HOST_64BIT
+ depends on HOST_64BIT
config SANDBOX_RAM_SIZE_MB
int "RAM size in MiB"
@@ -41,23 +41,11 @@ config SYS_CONFIG_NAME
default "sandbox_spl" if SANDBOX_SPL
default "sandbox" if !SANDBOX_SPL
-choice
- prompt "Run sandbox on 32/64-bit host"
- default HOST_64BIT
- help
- Sandbox can be built on 32-bit and 64-bit hosts.
- The default is to build on a 64-bit host and run
- on a 64-bit host. If you want to run sandbox on
- a 32-bit host, change it here.
-
config HOST_32BIT
- bool "32-bit host"
- depends on !PHYS_64BIT
+ def_bool ! $(cc-define,_LP64)
config HOST_64BIT
- bool "64-bit host"
-
-endchoice
+ def_bool $(cc-define,_LP64)
config SANDBOX_CRASH_RESET
bool "Reset on crash"
diff --git a/arch/x86/cpu/i386/setjmp.S b/arch/x86/cpu/i386/setjmp.S
index 40b10dc8df..eceeafa7c8 100644
--- a/arch/x86/cpu/i386/setjmp.S
+++ b/arch/x86/cpu/i386/setjmp.S
@@ -49,12 +49,17 @@ longjmp:
xchgl %eax, %edx
#else
movl 4(%esp), %edx /* jmp_ptr address */
+ movl 8(%esp), %eax /* Return value */
#endif
movl (%edx), %ebx
movl 4(%edx), %esp
movl 8(%edx), %ebp
movl 12(%edx), %esi
movl 16(%edx), %edi
+ test %eax, %eax
+ jnz nz
+ inc %eax
+nz:
jmp *20(%edx)
.size longjmp, .-longjmp
diff --git a/arch/x86/include/asm/setjmp.h b/arch/x86/include/asm/setjmp.h
index 49c36c1cc8..15915d0dc6 100644
--- a/arch/x86/include/asm/setjmp.h
+++ b/arch/x86/include/asm/setjmp.h
@@ -34,7 +34,9 @@ struct jmp_buf_data {
#endif
-int setjmp(struct jmp_buf_data *jmp_buf);
-void longjmp(struct jmp_buf_data *jmp_buf, int val);
+typedef struct jmp_buf_data jmp_buf[1];
+
+int setjmp(jmp_buf env);
+void longjmp(jmp_buf env, int val);
#endif