Files
Arquivotheca.AIX-4.1.3/bos/kernel/sys/POWER/overlay.h
seta75D d6fe8fe829 Init
2021-10-11 22:19:34 -03:00

243 lines
5.5 KiB
C

/* @(#)30 1.5.1.21 src/bos/kernel/sys/POWER/overlay.h, sysml, bos412, 9445C412a 10/25/94 11:45:55 */
#ifndef _H_OVERLAY
#define _H_OVERLAY
/*
* COMPONENT_NAME: (SYSML) Kernel Machine Language
*
* FUNCTIONS:
*
* ORIGINS: 27, 83
*
* (C) COPYRIGHT International Business Machines Corp. 1992, 1994
* All Rights Reserved
* Licensed Materials - Property of IBM
*
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*/
/*
* LEVEL 1, 5 Years Bull Confidential Information
*/
/* WARNING: Do not change this file without updating ml/POWER/overlay.m4.
* ml/POWER/sysoverlay.m4 may also need updating.
*/
#define MC_FLIH_ADDR 0x0200 /* machine check vector */
#define MC_FLIH_SIZE 0x0028
#define DS_FLIH_ADDR 0x0300 /* DSI vector */
#define DS_FLIH_SIZE 0x000c
#define IS_FLIH_ADDR 0x0400 /* ISI vector */
#define IS_FLIH_SIZE 0x000c
#define AL_FLIH_ADDR 0x0600 /* alignment check handler */
#define AL_FLIH_SIZE 0x0020
#define SC_PPC_ADDR 0x0c00 /* Power SC front end */
#define SC_PPC_SIZE 0x0014
#define DSE_FLIH_ADDR 0x0a00 /* Direct Store Error */
#define DSE_FLIH_SIZE 0x0004
#define TLB_FLIH_IFM_ADDR 0x1000 /* 603 TLB reload handler */
#define TLB_FLIH_DRM_ADDR 0x1100
#define TLB_FLIH_DWM_ADDR 0x1200
#define TLB_FLIH_SIZE 0x0100
#define CS_PWR_ADDR 0x1020 /* Power CS fast SVC */
#define CS_PWR_SIZE 0x0020
#define SC_PWR_ADDR 0x1fe0 /* Power PC SC front end */
#define SC_PWR_SIZE 0x0004
/* addresses of millicode routines required by PPC ABI. Do not change
*/
#define MULH_ADDR 0x3100
#define MULH_SIZE 0x0080
#define MULL_ADDR 0x3180
#define MULL_SIZE 0x0080
#define DIVSS_ADDR 0x3200
#define DIVSS_SIZE 0x0080
#define DIVUS_ADDR 0x3280
#define DIVUS_SIZE 0x0080
#define QUOSS_ADDR 0x3300
#define QUOSS_SIZE 0x0080
#define QUOUS_ADDR 0x3380
#define QUOUS_SIZE 0x0080
/*
* addresses of atomic lock primitives required by PPC ABI.
* Do not change.
*/
#define _CLEAR_LOCK_ADDR 0x3400
#define _CLEAR_LOCK_SIZE 0x0020
#define _CHECK_LOCK_ADDR 0x3420
#define _CHECK_LOCK_SIZE 0x0040
/* Overlay of machine dependent cs() function
*/
#define CS_ADDR 0x3460
#define CS_SIZE 0x0040
/*
* area reserved for future use. will have user read access.
*/
#define NONPRIV_RESERV_ADDR 0x8000
#define NONPRIV_RESERV_SIZE PSIZE
/*
* i_enable/i_disable are aligned to a 256 byte boundry for better
* cache affinity
*/
/* i_disable/disable_lock go together now--do not modify one without the other! */
#define I_DISABLE_ADDR 0x9000
#define I_DISABLE_SIZE 0x0004
#define DISABLE_LOCK_ADDR 0x9004
#define DISABLE_LOCK_SIZE 0x02FC
/* i_enable/unlock_enable go together now--do not modify one without the other! */
#define I_ENABLE_ADDR 0x9300
#define I_ENABLE_SIZE 0x0004
#define UNLOCK_ENABLE_ADDR 0x9304
#define UNLOCK_ENABLE_SIZE 0x01FC
#define SIMPLE_LOCK_ADDR 0x9500
#define SIMPLE_LOCK_SIZE 0x0400
#define SIMPLE_UNLOCK_ADDR 0x9900
#define SIMPLE_UNLOCK_SIZE 0x0200
#define FETCH_AND_ADD_ADDR 0x9B00
#define FETCH_AND_ADD_SIZE 0x0060
/* The following are overlay addresses for routines that can be called
* directly from base device drivers. Do not change the address of these
* functions. If it becomes a requirement to change the address wait for
* a major release. Changing these address breaks binary compatibility with
* device drivers.
*/
#define BUSGETC_ADDR 0xA000
#define BUSGETC_SIZE 0X0060
#define BUSGETS_ADDR 0xA060
#define BUSGETS_SIZE 0x0060
#define BUSGETSR_ADDR 0xA0c0
#define BUSGETSR_SIZE 0x0060
#define BUSGETL_ADDR 0xA120
#define BUSGETL_SIZE 0x0060
#define BUSGETLR_ADDR 0xA180
#define BUSGETLR_SIZE 0x0060
#define BUSPUTC_ADDR 0xA1e0
#define BUSPUTC_SIZE 0x0060
#define BUSPUTS_ADDR 0xA240
#define BUSPUTS_SIZE 0x0060
#define BUSPUTL_ADDR 0xA2a0
#define BUSPUTL_SIZE 0x0060
#define BUSPUTSR_ADDR 0xA300
#define BUSPUTSR_SIZE 0x0060
#define BUSPUTLR_ADDR 0xA360
#define BUSPUTLR_SIZE 0x0060
#define BUSCPY_ADDR 0xA3c0
#define BUSCPY_SIZE 0x00a0
/*
* Keep all read/write segment registers in the same cache
* line (64 bytes). These sizes are exact. Do not change
* these address without updating inline.h
*/
#define CHGSR_ADDR 0xA480
#define CHGSR_SIZE 0x0018
#define MTSR_ADDR 0xA498
#define MTSR_SIZE 0x0014
#define MFSR_ADDR 0xA4AC
#define MFSR_SIZE 0x000c
#define MFSRI_ADDR 0xA4B8
#define MFSRI_SIZE 0x0008
#define COMPARE_AND_SWAP_ADDR 0xA4C0
#define COMPARE_AND_SWAP_SIZE 0x0100
#define TEST_AND_SET_ADDR 0xA5C0
#define TEST_AND_SET_SIZE 0x0100
#define SIMPLE_LOCK_TRY_ADDR 0xA6C0
#define SIMPLE_LOCK_TRY_SIZE 0x0200
#define RSIMPLE_LOCK_ADDR 0xA8C0
#define RSIMPLE_LOCK_SIZE 0x0180
#define RSIMPLE_LOCK_TRY_ADDR 0xAA40
#define RSIMPLE_LOCK_TRY_SIZE 0x0180
#define RSIMPLE_UNLOCK_ADDR 0xABC0
#define RSIMPLE_UNLOCK_SIZE 0x0100
#define LOCKL_ADDR 0xACC0
#define LOCKL_SIZE 0x0200
#define FETCH_AND_OR_ADDR 0xAEC0
#define FETCH_AND_OR_SIZE 0x0060
#define FETCH_AND_NOP_ADDR 0xAF20
#define FETCH_AND_NOP_SIZE 0x0060
#define FETCH_AND_AND_ADDR 0xAF80
#define FETCH_AND_AND_SIZE 0x0060
#define FETCH_AND_ADD_H_ADDR 0xB000
#define FETCH_AND_ADD_H_SIZE 0x0100
#define UNLOCKL_ADDR 0xB100
#define UNLOCKL_SIZE 0x0200
#ifdef _POWER_MP
/* ppda/csa/curthread management
*/
#define MY_PPDA_ADDR 0xb400
#define MY_PPDA_SIZE 0x0008
#define MY_CSA_ADDR 0xb408
#define MY_CSA_SIZE 0x0020
#define GET_CURTHREAD_ADDR 0xb428
#define GET_CURTHREAD_SIZE 0x0020
#define SET_CSA_ADDR 0xb448
#define SET_CSA_SIZE 0x0018
#define SET_CURTHREAD_ADDR 0xb460
#define SET_CURTHREAD_SIZE 0x0010
#endif
#endif /* _H_OVERLAY */