Changeset e3038b4 in mainline for kernel/arch/ia32/src/asm.S


Ignore:
Timestamp:
2010-06-28T22:45:51Z (15 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
49eb681
Parents:
05e3cb8 (diff), e4a4b44 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge unified panic architecture (Phase 1).

Note that this is still work in progress as there are the following sharp edges:

  • imprecise detection of read/write accesses on some architectures
  • missing or imperfect capability to print stack traces on some architectures
  • istate_t on some architectures may contain too little valuable information
  • basically all trap frames need to be reorganized to look like a normal stack frame on the stack trace so that there are no missing frames
  • panic_common() could print more information about the current context such as the task name, thread name, ASID etc.
  • functions that call panic_*() should be protected against inlining to avoid missing or confusing stack frames in the stack trace
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia32/src/asm.S

    r05e3cb8 re3038b4  
    163163        pushl %edi      # remember return user address
    164164
     165        xorl %ebp, %ebp # stop stack traces here
     166
    165167        pushl %gs       # remember TLS
    166168
     
    196198# and call exc_dispatch().
    197199#
    198 #define INTERRUPT_ALIGN 64
     200#define INTERRUPT_ALIGN 128
    199201.macro handler i n
    200202       
     
    224226                movw %ax, %ds
    225227                movw %ax, %es
    226                
     228       
     229                xorl %ebp, %ebp
     230
    227231                cld
    228232                sti
     
    230234                call syscall_handler
    231235                cli
    232                 addl $28, %esp         # clean-up of parameters
     236
     237                movl 20(%esp), %ebp     # restore EBP
     238                addl $28, %esp          # clean-up of parameters
    233239               
    234240                popl %gs
     
    280286                movw %ax, %es
    281287               
    282                 # stop stack traces here
     288                # stop stack traces here if we came from userspace
     289                cmpl $8, 40(%esp)
     290                jz 0f
    283291                xorl %ebp, %ebp
    284                
     292
     2930:             
    285294                pushl %esp          # *istate
    286295                pushl $(\i)         # intnum
Note: See TracChangeset for help on using the changeset viewer.