Skip to content

Commit

Permalink
[PATCH] gcc4 compile fix for recent ia64 xpc changes
Browse files Browse the repository at this point in the history
Gcc4 doesn't like volatile casts as lvalues.  Make the structure members
volatile instead.

Signed-off-by: Dave Jones <davej@redhat.com>
Cc: "Luck, Tony" <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Dave Jones authored and Linus Torvalds committed Jun 25, 2005
1 parent 7e0fa31 commit 821fe94
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 13 deletions.
12 changes: 6 additions & 6 deletions arch/ia64/sn/kernel/xpc.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ struct xpc_rsvd_page {
u8 partid; /* partition ID from SAL */
u8 version;
u8 pad[6]; /* pad to u64 align */
u64 vars_pa;
volatile u64 vars_pa;
u64 part_nasids[XP_NASID_MASK_WORDS] ____cacheline_aligned;
u64 mach_nasids[XP_NASID_MASK_WORDS] ____cacheline_aligned;
};
Expand Down Expand Up @@ -138,7 +138,7 @@ struct xpc_vars {
* occupies half a cacheline.
*/
struct xpc_vars_part {
u64 magic;
volatile u64 magic;

u64 openclose_args_pa; /* physical address of open and close args */
u64 GPs_pa; /* physical address of Get/Put values */
Expand Down Expand Up @@ -185,8 +185,8 @@ struct xpc_vars_part {
* Define a Get/Put value pair (pointers) used with a message queue.
*/
struct xpc_gp {
s64 get; /* Get value */
s64 put; /* Put value */
volatile s64 get; /* Get value */
volatile s64 put; /* Put value */
};

#define XPC_GP_SIZE \
Expand Down Expand Up @@ -231,7 +231,7 @@ struct xpc_openclose_args {
*/
struct xpc_notify {
struct semaphore sema; /* notify semaphore */
u8 type; /* type of notification */
volatile u8 type; /* type of notification */

/* the following two fields are only used if type == XPC_N_CALL */
xpc_notify_func func; /* user's notify function */
Expand Down Expand Up @@ -439,7 +439,7 @@ struct xpc_partition {

/* XPC infrastructure referencing and teardown control */

u8 setup_state; /* infrastructure setup state */
volatile u8 setup_state; /* infrastructure setup state */
wait_queue_head_t teardown_wq; /* kthread waiting to teardown infra */
atomic_t references; /* #of references to infrastructure */

Expand Down
12 changes: 6 additions & 6 deletions arch/ia64/sn/kernel/xpc_channel.c
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ xpc_setup_infrastructure(struct xpc_partition *part)
* With the setting of the partition setup_state to XPC_P_SETUP, we're
* declaring that this partition is ready to go.
*/
(volatile u8) part->setup_state = XPC_P_SETUP;
part->setup_state = XPC_P_SETUP;


/*
Expand All @@ -227,7 +227,7 @@ xpc_setup_infrastructure(struct xpc_partition *part)
xpc_vars_part[partid].IPI_phys_cpuid =
cpu_physical_id(smp_processor_id());
xpc_vars_part[partid].nchannels = part->nchannels;
(volatile u64) xpc_vars_part[partid].magic = XPC_VP_MAGIC1;
xpc_vars_part[partid].magic = XPC_VP_MAGIC1;

return xpcSuccess;
}
Expand Down Expand Up @@ -355,7 +355,7 @@ xpc_pull_remote_vars_part(struct xpc_partition *part)

/* let the other side know that we've pulled their variables */

(volatile u64) xpc_vars_part[partid].magic = XPC_VP_MAGIC2;
xpc_vars_part[partid].magic = XPC_VP_MAGIC2;
}

if (pulled_entry->magic == XPC_VP_MAGIC1) {
Expand Down Expand Up @@ -1183,7 +1183,7 @@ xpc_process_msg_IPI(struct xpc_partition *part, int ch_number)
*/
xpc_clear_local_msgqueue_flags(ch);

(volatile s64) ch->w_remote_GP.get = ch->remote_GP.get;
ch->w_remote_GP.get = ch->remote_GP.get;

dev_dbg(xpc_chan, "w_remote_GP.get changed to %ld, partid=%d, "
"channel=%d\n", ch->w_remote_GP.get, ch->partid,
Expand Down Expand Up @@ -1211,7 +1211,7 @@ xpc_process_msg_IPI(struct xpc_partition *part, int ch_number)
*/
xpc_clear_remote_msgqueue_flags(ch);

(volatile s64) ch->w_remote_GP.put = ch->remote_GP.put;
ch->w_remote_GP.put = ch->remote_GP.put;

dev_dbg(xpc_chan, "w_remote_GP.put changed to %ld, partid=%d, "
"channel=%d\n", ch->w_remote_GP.put, ch->partid,
Expand Down Expand Up @@ -1875,7 +1875,7 @@ xpc_send_msg(struct xpc_channel *ch, struct xpc_msg *msg, u8 notify_type,
notify = &ch->notify_queue[msg_number % ch->local_nentries];
notify->func = func;
notify->key = key;
(volatile u8) notify->type = notify_type;
notify->type = notify_type;

// >>> is a mb() needed here?

Expand Down
2 changes: 1 addition & 1 deletion arch/ia64/sn/kernel/xpc_partition.c
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ xpc_rsvd_page_init(void)
* This signifies to the remote partition that our reserved
* page is initialized.
*/
(volatile u64) rp->vars_pa = __pa(xpc_vars);
rp->vars_pa = __pa(xpc_vars);

return rp;
}
Expand Down

0 comments on commit 821fe94

Please sign in to comment.