Dismiss
InnovationQ will be updated on Sunday, Oct. 22, from 10am ET - noon. You may experience brief service interruptions during that time.
Browse Prior Art Database

Method of Program Trace Generation

IP.com Disclosure Number: IPCOM000080547D
Original Publication Date: 1974-Jan-01
Included in the Prior Art Database: 2005-Feb-27
Document File: 3 page(s) / 16K

Publishing Venue

IBM

Related People

Herman, P: AUTHOR

Abstract

A microprogramming system is described for creating a wrap-around trace table in the user's region. Entries in the table represent the last n events (branches, interrupts). Each entry has two words: the first word has either the address of a successful branch or an interrupt address, and the second word has either the successful branch target address or interrupt information. A current pointer is used to find the last event on the table and reconstruct preceding events in case of a program blow. No modification to the original code is needed. Software is used only to initialize the system. All interrupts and trace recordings are generated through microcode with very little system degradation.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 40% of the total text.

Page 1 of 3

Method of Program Trace Generation

A microprogramming system is described for creating a wrap-around trace table in the user's region. Entries in the table represent the last n events (branches, interrupts). Each entry has two words: the first word has either the address of a successful branch or an interrupt address, and the second word has either the successful branch target address or interrupt information. A current pointer is used to find the last event on the table and reconstruct preceding events in case of a program blow. No modification to the original code is needed. Software is used only to initialize the system. All interrupts and trace recordings are generated through microcode with very little system degradation.

A microcode, ATBI, is loaded in storage and remains dormant until activated with a special instruction issued by a small software program, ATBISOFT. In this program, the PARM field of the EXEC card contains information about the name of the program to be traced, the number of entries for the trace table, the type of events to be traced, etc.

ATBISOFT issues a macro to intercept program interrupts and a GETMAIN macro to get (32*N*8) bytes of core for the trace table, where n is the desired number of entries for the table. Once the core is obtained, a special instruction is issued to activate the microcode: DS 0H DC CL4'ATBI' DC X'A2100OFF' Where A2 is the op code, 1 indicates register one, which contains the address of the trace table + 16 and FF is a special op code. When the CPU tries to execute the A2 op code, one of the following two situations occurs: Case 1) ATBI microcode not loaded in storage. In the standard microcode, the A2 is an invalid op code and a program interrupt occurs. ATBISOFT regains control through the SPIE exit, a message is not present and, next, the task is terminated. Case 2) ATBI microcode loaded in storage. Loading of the ATBI microcode modifies only one standard microinstruction (to set a primary hook). At address CA20 in the standard microcode, a branch is made to a microroutine that generates a program interrupt (due to the A2 invalid op code). The primary hook modifies this branch to point to an ATBI microroutine, which verifies the legality of the A2 op code and activates the ATBI system by: i) Setting secondary hooks in the standard microcode a) LPSW hook. This hook in the Load Program Status Word (LPSW) microroutine allows ATBI to determine if a task must be traced or not. b) IPL hook. If ATBI is active and the system blows, this hook resets the microcode to its standard form at the next Initial Program Load (IPL). ii) Creating ATBI vector in control storage. This vector has 15 entries; the entries contain the trace flags, pointers, etc., for all the tasks running under ATBI at a given time. The index for the vector is the protection key associated with a task initialized by ATBISOFT.

The secondary hooks are set and the vector is created only by the first ATBISOFT task execu...