Double Fault Stack Exception Handling for x86 to ARM Porting

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

When porting software from x86 to ARM architecture, there is a need to model the behavior of x86 double fault exceptions to avoid significant changes in the software code, as x86 and ARM CPUs have different mechanisms for handling exceptions and maintaining valid stacks during stack overflows.

Innovation Solution

A method is implemented where an exception handler stores an exception frame on a double fault stack, switches the stack pointer to the double fault stack, and sets the current stack pointer to it, allowing for consistent exception handling across architectures.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If x86 CPU automatically switches to a double fault stack when detecting a stack overflow, then the CPU maintains a valid stack for exception handling, but ARM CPU lacks this automatic mechanism requiring software implementation

Engineering Contradiction:
Improvestack validity during exception handlingVSAvoidexception handling mechanism complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent introduces a double fault stack as an intermediary data structure between the current stack and the exception handling mechanism. When a stack overflow occurs, the system uses this intermediate stack to store exception frames and maintain register states, bridging the gap between the overflowed stack and the exception handler's need for a valid stacking area.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system pre-allocates a double fault stack before exceptions occur. When a stack overflow is detected, the exception handler can immediately switch to this pre-prepared stack without needing to allocate or initialize memory at the moment of failure, enabling rapid response while maintaining reliability.

Inventive Principle:
Principle #10Preliminary action

2Adaptability or versatility

If ARM CPU uses separate stack pointers for each exception level, then the CPU maintains architecture-specific exception handling, but porting x86 software requires significant code changes

Engineering Contradiction:
Improvearchitecture-specific exception handling capabilityVSAvoidsoftware portability
Core Design Contradiction:
Adaptability or versatilityVSEase of manufacture

Solution Approach 1:

The patent implements a universal double fault stack mechanism that works across both x86 and ARM architectures. By using a standardized stack-based approach with exception frames that capture register states in a consistent format, the same exception handling code can port between architectures without significant modification, achieving multi-architecture universality.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The system copies the x86 double fault behavior model into the ARM environment through software simulation. Rather than relying on ARM's native exception level stack pointers, the patent replicates the x86 double fault stack semantics using ARM's stack mechanism, allowing x86 software to run on ARM with minimal changes.

Inventive Principle:
Principle #26Copying

3Reliability

If the exception handler stores exception frames on the double fault stack, then the system maintains register states during stack overflow, but additional stack management operations are required

Engineering Contradiction:
Improveexception state preservationVSAvoidstack pointer management complexity
Core Design Contradiction:
ReliabilityVSEase of operation

Solution Approach 1:

The exception handling mechanism serves itself by automatically switching to the double fault stack when needed. The stack pointer management is self-regulating: the system monitors stack usage, detects overflow conditions, and autonomously transitions to the alternative stack without requiring external intervention or complex manual management.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system implements feedback through stack overflow detection. When the current stack reaches its limits, this condition feeds back to the exception handler, which then triggers the switch to the double fault stack. This feedback loop ensures the system responds appropriately to stack exhaustion while maintaining simple operation.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS12118362B2Behavioral implementation of a double fault stack in a computer system
Publication Date: 2024.10.15 VMWARE INC
  • US12118362B2 patent drawing
  • US12118362B2 patent drawing
  • US12118362B2 patent drawing

AI summary

An example method of exception handling in a computer system is described. The computer system includes a physical central processing unit (PCPU) and a system memory, the system memory storing a first stack, a second stack, and a double fault stack associated with the PCPU. The method includes: storing, by an exception handler executing in the computer system, an exception frame on the double fault stack in response to a stack overflow condition of the first stack; switching, by the exception handler, a first stack pointer of the PCPU from pointing to the first stack to pointing to the double fault stack; setting a current stack pointer of the PCPU to the first stack pointer; and executing software on the PCPU with the current stack pointer pointing to the double fault stack.