X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fx86-bsd-os.c;h=a84336436fd36dc8d9cec0cf0035c6e73ac73cb9;hb=e4542bc034db18cf98f005b2dac53a6d7d5c7260;hp=b30eed32842e554687cd0ecce47db6b2fb22da41;hpb=01044af1b8d69fc3899dc0417064c1512223223d;p=sbcl.git diff --git a/src/runtime/x86-bsd-os.c b/src/runtime/x86-bsd-os.c index b30eed3..a843364 100644 --- a/src/runtime/x86-bsd-os.c +++ b/src/runtime/x86-bsd-os.c @@ -1,4 +1,5 @@ #include +#include "sbcl.h" #include "runtime.h" #include "target-os.h" @@ -6,36 +7,36 @@ * stuff in FreeBSD and OpenBSD, but in detail they're different in * almost every line of code. It would be nice to find some way to * factor out the commonality better; failing that, it might be best - * just to split this generic-BSD code into one variant for each BSD. + * just to split this generic-BSD code into one variant for each BSD. * * KLUDGE II: this split has begun with the addition of the Darwin BSD * flavour, with the cross-architecture complications that this * entails; unfortunately, currently the situation is worse, not * better, than in the above paragraph. */ -#if defined(__FreeBSD__) || defined(__OpenBSD__) +#if defined(__FreeBSD__) || defined(__OpenBSD__) int * os_context_register_addr(os_context_t *context, int offset) { switch(offset) { case 0: - return CONTEXT_ADDR_FROM_STEM(eax); + return CONTEXT_ADDR_FROM_STEM(eax); case 2: - return CONTEXT_ADDR_FROM_STEM(ecx); + return CONTEXT_ADDR_FROM_STEM(ecx); case 4: - return CONTEXT_ADDR_FROM_STEM(edx); + return CONTEXT_ADDR_FROM_STEM(edx); case 6: - return CONTEXT_ADDR_FROM_STEM(ebx); + return CONTEXT_ADDR_FROM_STEM(ebx); case 8: - return CONTEXT_ADDR_FROM_STEM(esp); + return CONTEXT_ADDR_FROM_STEM(esp); case 10: - return CONTEXT_ADDR_FROM_STEM(ebp); + return CONTEXT_ADDR_FROM_STEM(ebp); case 12: - return CONTEXT_ADDR_FROM_STEM(esi); + return CONTEXT_ADDR_FROM_STEM(esi); case 14: - return CONTEXT_ADDR_FROM_STEM(edi); + return CONTEXT_ADDR_FROM_STEM(edi); default: - return 0; + return 0; } } @@ -53,23 +54,25 @@ os_context_register_addr(os_context_t *context, int offset) { switch(offset) { case 0: - return CONTEXT_ADDR_FROM_STEM(EAX); + return CONTEXT_ADDR_FROM_STEM(EAX); case 2: - return CONTEXT_ADDR_FROM_STEM(ECX); + return CONTEXT_ADDR_FROM_STEM(ECX); case 4: - return CONTEXT_ADDR_FROM_STEM(EDX); + return CONTEXT_ADDR_FROM_STEM(EDX); case 6: - return CONTEXT_ADDR_FROM_STEM(EBX); + return CONTEXT_ADDR_FROM_STEM(EBX); case 8: - return CONTEXT_ADDR_FROM_STEM(ESP); + return CONTEXT_ADDR_FROM_STEM(ESP); case 10: - return CONTEXT_ADDR_FROM_STEM(EBP); + return CONTEXT_ADDR_FROM_STEM(EBP); case 12: - return CONTEXT_ADDR_FROM_STEM(ESI); + return CONTEXT_ADDR_FROM_STEM(ESI); case 14: - return CONTEXT_ADDR_FROM_STEM(EDI); + return CONTEXT_ADDR_FROM_STEM(EDI); + case 16: + return CONTEXT_ADDR_FROM_STEM(UESP); default: - return 0; + return 0; } } @@ -83,7 +86,7 @@ os_context_sp_addr(os_context_t *context) -/* FIXME: If this can be a no-op on BSD/x86, then it +/* FIXME: If this can be a no-op on BSD/x86, then it * deserves a more precise name. * * (Perhaps os_prepare_data_area_to_be_executed()?) */