summaryrefslogtreecommitdiffstats
path: root/src/usr/initservice/istepdispatcher/splesscommand.C
blob: 563a4be3aa48128ba92f6e0cbcaf21c3a7ce4601 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
//  IBM_PROLOG_BEGIN_TAG
//  This is an automatically generated prolog.
//
//  $Source: src/usr/initservice/istepdispatcher/splesscommand.C $
//
//  IBM CONFIDENTIAL
//
//  COPYRIGHT International Business Machines Corp. 2011
//
//  p1
//
//  Object Code Only (OCO) source materials
//  Licensed Internal Code Source Materials
//  IBM HostBoot Licensed Internal Code
//
//  The source code for this program is not published or other-
//  wise divested of its trade secrets, irrespective of what has
//  been deposited with the U.S. Copyright Office.
//
//  Origin: 30
//
//  IBM_PROLOG_END

/**
 *  @file splesscommand.C
 *
 *  Collection of routines to read/write the spless command reg
 *
 */


/******************************************************************************/
// Includes
/******************************************************************************/
#include    <stdint.h>
#include    <stdio.h>
#include    <string.h>

#include    <errl/errlentry.H>          //  errlHndl_t
#include    <sys/mmio.h>                //  mmio_scratch_read/write

#include    "splesscommon.H"


/******************************************************************************/
// Globals/Constants
/******************************************************************************/

/******************************************************************************/
// Typedef/Enumerations
/******************************************************************************/

namespace   SPLESSCMD
{


void    read( bool      &io_rgobit,
              uint16_t  &io_ristep,
              uint16_t  &io_rsubstep )
{
    InternalCommand l_cmd;

    l_cmd.val64 = mmio_scratch_read(MMIO_SCRATCH_IPLSTEP_COMMAND);

    io_rgobit   = l_cmd.f.gobit;
    io_ristep   = l_cmd.f.istep;
    io_rsubstep = l_cmd.f.substep;

}


void    write( const bool       i_gobit,
               const uint16_t   i_istep,
               const uint16_t   i_substep   )
{
    InternalCommand l_cmd;

    //  copy into union
    l_cmd.f.gobit    =   i_gobit;
    l_cmd.f.istep    =   i_istep;
    l_cmd.f.substep  =   i_substep;

    mmio_scratch_write( MMIO_SCRATCH_IPLSTEP_COMMAND, l_cmd.val64 );

}


void    getgobit( bool &o_rgobit )
{
    uint16_t    l_istep     =   0;
    uint16_t    l_substep   =   0;

    //  re-use above call...
    read( o_rgobit,
          l_istep,
          l_substep   );

}


void    setgobit( const bool  i_gobit )
{
    InternalCommand l_cmd;

    l_cmd.val64 =   mmio_scratch_read( MMIO_SCRATCH_IPLSTEP_COMMAND);

    l_cmd.f.gobit  =   i_gobit;

    mmio_scratch_write( MMIO_SCRATCH_IPLSTEP_COMMAND, l_cmd.val64 );

}

}   //  namespace
OpenPOWER on IntegriCloud