+#endif /* __FreeBSD__ || __OpenBSD__ */
+
+#ifdef __NetBSD__
+int *
+os_context_register_addr(os_context_t *context, int offset)
+{
+ switch(offset) {
+ case 0:
+ return CONTEXT_ADDR_FROM_STEM(EAX);
+ case 2:
+ return CONTEXT_ADDR_FROM_STEM(ECX);
+ case 4:
+ return CONTEXT_ADDR_FROM_STEM(EDX);
+ case 6:
+ return CONTEXT_ADDR_FROM_STEM(EBX);
+ case 8:
+ return CONTEXT_ADDR_FROM_STEM(ESP);
+ case 10:
+ return CONTEXT_ADDR_FROM_STEM(EBP);
+ case 12:
+ return CONTEXT_ADDR_FROM_STEM(ESI);
+ case 14:
+ return CONTEXT_ADDR_FROM_STEM(EDI);
+ case 16:
+ return CONTEXT_ADDR_FROM_STEM(UESP);
+ default:
+ return 0;
+ }
+}
+
+int *
+os_context_sp_addr(os_context_t *context)
+{
+ return &(_UC_MACHINE_SP(context));
+}
+
+#endif /* __NetBSD__ */
+
+